zoukankan      html  css  js  c++  java
  • 【树】Count Complete Tree Nodes

    题目:

    求完全二叉树节点数。

    思路:

    满二叉树的节点数是2^k-1,k是树的深度。

    所以我们可以先判断该树是否为满二叉树,然后是的话直接返回结果,如果不是递归地求解子树。

    这样不用遍历所有的节点。复杂度小于O(N),比对所有点遍历复杂度要小,最好的情况是O(lgN)。

    推算大概在O(lgN)~O(N)之间。

    /**
     * Definition for a binary tree node.
     * function TreeNode(val) {
     *     this.val = val;
     *     this.left = this.right = null;
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {number}
     */
    var countNodes = function(root) {
        if(root==null){
            return 0;
        }
        
        var l=root,r=root;
        var lDep=0,rDep=0;
        
        while(l){
            lDep++;
            l=l.left;
        }
        
        while(r){
            rDep++;
            r=r.right;
        }
        
        if(lDep==rDep){
            return Math.pow(2,lDep)-1;
        }else{
            return countNodes(root.left)+countNodes(root.right)+1;
        }
    };
  • 相关阅读:
    PHP—字符串编码
    使用html模板
    创建html模板
    默认.htpl改为.htpl
    eclipse导入项目前面有感叹号
    eclipse点不出方法
    eclipse界面混乱
    面试题
    多线程
    瀑布流
  • 原文地址:https://www.cnblogs.com/shytong/p/5182733.html
Copyright © 2011-2022 走看看