LintCode: 두 갈래 찾기 트리 확인

인증 두 갈래 찾기 트리


설명필기데이터 평가 두 갈래 트리를 지정해서 합법적인 두 갈래 찾기 트리 (BST) 인지 아닌지 판단하기
BST 정의:
  • 노드의 왼쪽 트리의 값은 이 노드의 값보다 엄격하게 작아야 한다.
  • 노드의 오른쪽 하위 트리의 값은 이 노드의 값보다 엄격해야 한다.
  • 좌우 자목도 반드시 두 갈래로 나무를 찾아야 한다.
  • 한 노드의 나무도 두 갈래로 나무를 찾는다.

  • 당신은 실제 면접에서 이 문제를 만난 적이 있습니까? 
    Yes
    예제
    예:
      2
     / \
    1   4
       / \
      3   5
    

    상술한 이 두 갈래 나무는 {2,1,4,#,#,3,5}로 서열화되었다.
    태그
    관련 제목
  • 귀속 방식 실현, 좌우 자수의 상하 경계 주의
    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    public class Solution {
        /**
         * @param root: The root of binary tree.
         * @return: True if the binary tree is BST, or false
         */
        public static boolean isValidBST(TreeNode root) {
            // write your code here
            if (root == null) {
                return true;
            }
            return isValidBSTRec(root, Long.MIN_VALUE, Long.MAX_VALUE);
        }
    
        public static boolean isValidBSTRec(TreeNode root, long low, long up) {
            if (root == null) {
                return true;
            }
            //  
            if (root.val <= low || root.val >= up) {
                return false;
            }
            return isValidBSTRec(root.left, low, root.val) && isValidBSTRec(root.right, root.val, up);
        }
    }
  • 좋은 웹페이지 즐겨찾기