码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode222

时间:2018-06-17 13:30:19      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:ati   相等   高度   节点   深度   tno   满二叉树   结果   左移   

    public static int pow2(int x){
        if(x==1)
            return 1;
        else{
            /**
             * 必须用一个数来保存左移的结果
             * 否则not a statement
             * 移x位,等于乘以x个2
             * 2 《《 x
             * 这样就是2^x+1次方了
             */
            int num = 0;
            num = 1 << x ;
            return num-1;
        }
    }

 

    /**
     *
     * 对于一个节点node,计算它最左端的节点到node的深度为leftDepth,计算它最右端的节点到node的深度是rightDepth;
        如果leftDepth和rightDepth相等,那么以node为根节点的树是一棵满二叉树,此时以node为根节点的树的节点个数是pow(2,leftDepth)-1;
        如果leftDepth和rightDepth不相等,递归求解node的左子树的节点数和右子树的节点数。
     */
    public int countNodes(TreeNode root) {

        if(root==null)
            return 0;

        int leftDepth = 0;
        int rightDepth = 0;

        /**
         * 统计左边子树高度
         */
        for(TreeNode node = root;node!=null;node=node.left)
            leftDepth++;

        for(TreeNode node = root;node!=null;node=node.right)
            rightDepth++;


        if(leftDepth==rightDepth){
            return pow2(leftDepth);
        } else{

            return 1+countNodes(root.left)+countNodes(root.right);

        }



    }

 

LeetCode222

标签:ati   相等   高度   节点   深度   tno   满二叉树   结果   左移   

原文地址:https://www.cnblogs.com/weizhibin1996/p/9192613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!