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