1 递归
int TreeDepth(TreeNode* pRoot){
if(pRoot == NULL){
return 0;
}
int left = TreeDepth(pRoot->left);
int right = TreeDepth(pRoot->right);
return left>right? left+1:right+1;
}
2 非递归
int TreeDepth(TreeNode* pRoot)
{
deque<TreeNode*> queue;
int count=0;
int depth=0;
int nextcount=1;
if(pRoot==NULL)
return 0;
queue.push_back(pRoot);
while(!queue.empty()){
TreeNode* p=queue.front();
queue.pop_front();
count++;
if(p->left){
queue.push_back(p->left);
}
if(p->right){
queue.push_back(p->right);
}
if(count==nextcount){
nextcount=queue.size();
count=0;
depth++;
}
}
return depth;
}