zoukankan      html  css  js  c++  java
  • Leetcode 222.完全二叉树的节点个数

    完全二叉树的节点个数

    给出一个完全二叉树,求出该树的节点个数。

    说明:

    完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

    示例:

    输入:

    输出: 6

     1 public class Solution {
     2 
     3     // 获取左子树的高度(其实是最左侧分支)
     4     public int getLeftHeight(TreeNode root) {
     5         int count = 0;
     6         while (root != null) {
     7             count++;
     8             root = root.left;
     9         }
    10         return count;
    11     }
    12 
    13     // 获取右子树的高度(其实是最右侧分支的高度)
    14     public int getRightHeight(TreeNode root) {
    15         int count = 0;
    16         while (root != null) {
    17             count++;
    18             root = root.right;
    19         }
    20         return count;
    21     }
    22 
    23     public int countNodes(TreeNode root) {
    24         if (root == null) {
    25             return 0;
    26         }
    27         int leftHeight = getLeftHeight(root);
    28         int rightHeight = getRightHeight(root);
    29 
    30         if (leftHeight == rightHeight) {
    31             // 表示是满二叉树,二叉树的节点数直接由公式2^n-1得到
    32             // leftHeight即为层数, 1 << leftHeight使用位运算计算2^leftHeight,效率更高
    33             // 注意(1 << leftHeight) - 1 的括号必须有!!
    34             return (1 << leftHeight) - 1;
    35         } else {
    36             // 若该二叉树不是满二叉树,递归的调用该方法,计算左子树和右子树的节点数
    37             return countNodes(root.left) + countNodes(root.right) + 1;
    38         }
    39     }
    40 }
  • 相关阅读:
    安装ActivePython
    安装Selenium
    安装setuptools与pip
    windows下测试环境搭建--Python安装
    编程语言 标记语言 脚本语言
    XMLHttpRequest 对象
    事务
    jsp
    Cookie案例-显示用户的上次访问时间代码实现
    事务处理
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10203064.html
Copyright © 2011-2022 走看看