zoukankan      html  css  js  c++  java
  • 222. Count Complete Tree Nodes

    Given a complete binary tree, count the number of nodes.

    题目含义:给定一个完整二叉树,求所有节点数

    百度百科中完全二叉树的定义如下:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

    方法一:

    1   private int height(root)
      { return root == null ? -1 : 1 + height(root.left); }
    3     public int countNodes(TreeNode root) {
    4         int h = height(root);
    5         return h < 0 ? 0 :
    6                height(root.right) == h-1 ? (1 << h) + countNodes(root.right)
    7                                          : (1 << h-1) + countNodes(root.left);
    8     }

    方法二:

     1     public int countNodes(TreeNode root) {
     2         //如果是满二叉树,节点总和是(2的深度次方)-1,如果是完全二叉树,节点总和是左右子树的总和加1
     3         if (root == null) return 0;
     4         TreeNode left=root,right=root;
     5         int leftHeight = 0,rightHeight = 0;
     6         while (left!=null)
     7         {
     8             left = left.left;
     9             leftHeight++;
    10         }
    11         while (right!=null)
    12         {
    13             right = right.right;
    14             rightHeight++;
    15         }
    16         if (leftHeight == rightHeight) return (int) Math.pow(2,leftHeight)-1;
    17         return countNodes(root.left) + countNodes(root.right)+1;        
    18     }
  • 相关阅读:
    Centos 配置网易YUM源
    JDK 变量配置
    redis如何解决key冲突?
    大数据技术(1)流式计算与Storm
    20151211小问题
    返回顶部
    20151210小问题2
    20151210小问题
    20151209小问题
    前端程序员的自我修养
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7732128.html
Copyright © 2011-2022 走看看