题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
只有一个结点的时候,二叉树的高度为1。
解法一:非递归写法,使用层次遍历
int TreeDepth(TreeNode* pRoot){
if(pRoot ==NULL){
return 0;
}
int depth = 0;
queue<TreeNode*> q;
q.push(pRoot);
while(!q.empty()){
int size = q.size();
depth++;
while(size != 0){
TreeNode* node = q.front();
if(node->left){
q.push(node->left);
}
if(node->right){
q.push(node->right);
}
q.pop();
size--;
}
}
return depth;
}
解法二:递归遍历
int TreeDepth(TreeNode* pRoot){
int left_depth,right_depth;
if(pRoot != NULL){
left_depth= TreeDepth(pRoot->left);
right_depth= TreeDepth(pRoot->right);
if(left_depth< right_depth){
return right_depth+ 1;
}else{
return left_depth+ 1;
}
}
return 0;
}