LeetCode Count Complete Tree Nodes

Description

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

The original problem is here.

The original code is here.

My Solution

I solve this problem in C++, as below:

/*
*Count Complete Tree Nodes 
*Author: shuaijiang
*Email: zhaoshuaijiang8@gmail.com
*/
#include<iostream>
#include<stack>
#include<vector>
#include<stdlib.h>
using namespace std;
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int countNodes(TreeNode* root) {
        if(root == NULL) 
            return 0;
        int leftH  = leftHight(root) + 1;
        int rightH = rightHight(root) + 1;
        if(leftH == rightH)
            return     2<<(leftH-1) - 1;
        else
            return countNodes(root->left) + countNodes(root->right) + 1;
    }
    int leftHight(TreeNode * root){
        int hight = 0;
        while(root->left != NULL){
            root = root->left;
            hight ++;
        }
        return hight;
    }
    int rightHight(TreeNode * root){
        int hight = 0;
        while(root->right != NULL){
            root = root->right;
            hight ++;
        }
        return hight;
    }
};

Note

To solve the problem, recursion is used. If the left child and the right child have the different hight, we compute the nodes of the left and right, respectively.


LeetCode Count Complete Tree Nodes
http://zhaoshuaijiang.com/2015/08/04/leetcode_count_complete_tree_nodes/
作者
shuaijiang
发布于
2015年8月4日
许可协议