leetcode.222. Count Complete Tree Nodes

来源:互联网 发布:中印 软件 编辑:程序博客网 时间:2024/05/16 05:32

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 2h nodes inclusive at the last level h.


/** * 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 l = getLeft(root) ;          int r = getRight(root) ;                    if(l==r) {              return (2<<l) - 1;          } else {              return countNodes(root->left) + countNodes(root->right) + 1;          }      }    int getLeft(TreeNode* root) {          int count = 0;          while(root->left!=NULL) {              root = root->left;              ++count;          }          return count;      }            int getRight(TreeNode* root) {          int count = 0;          while(root->right!=NULL) {              root = root->right;              ++count;          }          return count;      }  };


0 0
原创粉丝点击