本题源自LeetCode
----------------------------------------------------------------
主要是考虑只有一个分支。
递归:
int run(TreeNode *root) {
if(root==NULL)
return 0;
int left=run(root->left);
int right=run(root->right);
//考虑只有一个分支
if(left==0||right==0){
return 1+right+left;
}
return (left>right?right:left)+1;
}
非递归:
int run(TreeNode *root) {
if(root==NULL)
return 0;
deque<TreeNode*> trees;
trees.push_back(root);
int count=1;
int nextCount=0;
int level=1;
while(!trees.empty()){
TreeNode* node=trees.front();
trees.pop_front();
count--;
if(node->left!=NULL){
trees.push_back(node->left);
nextCount++;
}
if(node->right!=NULL){
trees.push_back(node->right);
nextCount++;
}
if(node->left==NULL&&node->right==NULL){
break;
}
if(count==0){
count=nextCount;
nextCount=0;
level++;
}
}
return level;
}