描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。
数据范围:节点的数量满足 0≤n≤100 ,节点上的值满足 0≤val≤100
进阶:空间复杂度O(1) ,时间复杂度O(n)
假如输入的用例为{1,2,3,4,5,#,6,#,#,7},那么如下图:
示例1
输入:
{1,2,3,4,5,#,6,#,#,7}
返回值:
4
示例2
输入:
{}
返回值:
0
代码实现
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return int整型
*/
int TreeDepth(struct TreeNode* pRoot ) {
// write code here
if (pRoot == NULL)
return 0;
int leftDep = TreeDepth(pRoot->left);
int rightDep = TreeDepth(pRoot->right);
return (leftDep > rightDep ? leftDep : rightDep) + 1;
}