题解 | #判断一棵二叉树是否为搜索二叉树和完全二叉树#

判断一棵二叉树是否为搜索二叉树和完全二叉树

http://www.nowcoder.com/practice/f31fc6d3caf24e7f8b4deb5cd9b5fa97


/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 the root
     * @return bool布尔型一维数组
     */
    public boolean[] judgeIt (TreeNode root) {
        // write code here
     
        boolean isSearchTree = isSearchTree(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
        boolean isFullTree = isFullTree(root);
        return new boolean[]{isSearchTree, isFullTree};
    }
    private boolean isFullTree(TreeNode root){
        if(root == null){
            return true;
        }
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        while(queue.peek() != null){
            TreeNode node =queue.poll();
            queue.offer(node.left);
            queue.offer(node.right);
        }
        while(!queue.isEmpty() && queue.peek() == null){
            queue.poll();
        }
        return queue.isEmpty();
    }
    
    //左子树 都要比这个节点小,右子树都要大
    private boolean isSearchTree(TreeNode node, int min, int max){
        if(node == null){
            return true;
        }
        if(node.val <= min ||node.val >= max){
            return false;
        }
        return isSearchTree(node.left, min, node.val) && isSearchTree(node.right, node.val, max);
    }
}
全部评论

相关推荐

数开小菜鸡_暂退沉淀版:大二第三段,还是字节,这下真得点点举办了
点赞 评论 收藏
分享
海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务