zoukankan      html  css  js  c++  java
  • 958. 二叉树的完全性检验

     方法一:层序遍历,只要节点不连续,返回false

    class Solution {
        public boolean isCompleteTree(TreeNode root) {
            Queue<TreeNode> queue=new LinkedList<>();
            TreeNode prev=root;
            queue.add(root);
            while (!queue.isEmpty()){
                TreeNode node=queue.remove();
                //如果前一个为空后一个不为空则返回false
                if (prev==null&&node!=null){
                    return false;
                }
                //将子节点加入到队列中
                if (node!=null){
                    queue.add(node.left);
                    queue.add(node.right);
                }
                prev=node;
            }
            return true;
        }
    }

    方法二:DFS统计总节点个数是否等于完全二叉树最大需求节点个数

    class Solution {
        int size = 0;  // 总结点个数
        int maxCode; // 最大需求节点个数
        public boolean isCompleteTree(TreeNode root) {
            helper(root, 1);
            return size == maxCode ? true : false;
    
        }
        public void helper(TreeNode root, int code){
            if(root == null) return;
            size++;
            maxCode = Math.max(maxCode, code);
            helper(root.left, 2*code);
            helper(root.right, 2*code + 1);
        }
    }
  • 相关阅读:
    git如何忽略文件或者文件夹
    jsonp跨域请求发布出去
    PHP
    curl保存图片
    curl 请求
    输入框纯数字
    PHP允许AJAX跨域请求的两种方法
    IOS开发笔记 IOS如何访问通讯录
    Android 蓝牙开发(整理大全)
    新的移动服务示例
  • 原文地址:https://www.cnblogs.com/yonezu/p/13291641.html
Copyright © 2011-2022 走看看