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

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

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布尔型一维数组
     */
    // 存放中序遍历结果
    ArrayList<Integer> zhongList = new ArrayList<>();
    public boolean[] judgeIt (TreeNode root) {
        // write code here
        zhongxu(root);
        boolean[] returnArray = new boolean[2];
        returnArray[0] = judgeUper();
        returnArray[1] = judgeWanQuan(root);
        return returnArray;
    }
    // 中序遍历二叉树 
    public void zhongxu(TreeNode root){
        if(root != null){
            zhongxu(root.left);
            zhongList.add(root.val);
            zhongxu(root.right);
        }
    }
    // 判断是不是升序
    public boolean judgeUper(){
        for(int i = 0; i < zhongList.size()-1; i++){
            if(zhongList.get(i) > zhongList.get(i+1)){
                return false;
            }
        }
        return true;
    }
    // 层次遍历二叉树判断是不是完全二叉树
    public boolean judgeWanQuan(TreeNode root){
        // 定义一个队列
        LinkedList<TreeNode> duiLie = new LinkedList<>();
        duiLie.add(root);
        TreeNode del = null;
        while(duiLie.peek() != null){
            del = duiLie.poll();
            duiLie.add(del.left);
            duiLie.add(del.right);
        }
        
        while(!duiLie.isEmpty() && duiLie.peek() == null){
            duiLie.poll();
        }
        return duiLie.isEmpty();
    }
}
全部评论

相关推荐

05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务