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

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

    Definition of a complete binary tree from Wikipedia:
    In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2hnodes inclusive at the last level h.

    方法1:递归

    从root开始,一直向左的深度 == 一直向右的深度,则说明root是一个满二叉树,节点个数为2^height - 1

    若不是,则节点个数为 countNodes(root->left) + countNodes(root->right) + 1;

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     int countNodes(TreeNode* root) {
    13         if (root == NULL) {
    14             return 0;
    15         }
    16         int left_height = get_height(root, true); //从root开始
    17         int right_height = get_height(root, false);
    18         if (left_height == right_height) {
    19             return pow(2, left_height) - 1;
    20         }
    21         return countNodes(root->left) + countNodes(root->right) + 1;
    22     }
    23 private:
    24     int get_height(TreeNode *root, bool toLeft) {
    25         if (root == NULL) {
    26             return 0;
    27         }
    28         if (toLeft) {
    29             return get_height(root->left, true) + 1;
    30         }
    31         return get_height(root->right, false) + 1;
    32         
    33     }
    34 };
  • 相关阅读:
    onclick中的函数的参数this
    classList的使用
    设置点击鼠标时不跳转
    模块补充shutil,logging
    re模块拾遗和递归函数
    正则表达式-re模块
    软件开发规范
    自定义模块2
    常用模块
    初识自定义模块
  • 原文地址:https://www.cnblogs.com/huj690/p/4561989.html
Copyright © 2011-2022 走看看