题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
递归:
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
return pRoot==NULL?0: max(TreeDepth(pRoot->left)+1,TreeDepth(pRoot->right)+1);
}
};
非递归:
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(!pRoot) return 0;
queue<TreeNode*>que;
int deep=0;
que.push(pRoot);
while(!que.empty()){
deep++;
for(int i=0;i<que.size();i++){
TreeNode *tmp=que.front();
que.pop();
if(tmp->left)que.push(tmp->left);
if(tmp->right)que.push(tmp->right);
}
}
return deep;
}
};