二叉树的深度
时间限制:1秒 空间限制:32768K |
题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 |
题目分析
首先给出一棵二叉树 T 0 0 / \ T 1 1 T 2 2 / \ T 3 3 T 4 4 / T 5 5 从给出的树的结构图中我们可以发现,T 0 0 的深度为T 1 1 的深度加1,且T 1 1 比T 2 2 深;T 1 1 的深度为T 4 4 的深度加1,且T 4 4 比T 3 3 深;T 4 4 的深度为T 5 5 的深度加1。 此时我们不难发现,我们只需要遍历树的每个节点,然后返回左右子树较深的深度+1即为该树的深度。代码实现如下 |
代码实现
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(pRoot == NULL)
{
return 0;
}
int iLeft = TreeDepth(pRoot->left);
int iRight = TreeDepth(pRoot->right);
return (iLeft > iRight ? iLeft : iRight) + 1;
}
};