描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。
数据范围:节点的数量满足 0≤n≤100 ,节点上的值满足 0≤val≤100
进阶:空间复杂度 O(1),时间复杂度 O(n)
int TreeDepth(struct TreeNode* pRoot ) {
// r:右子树的深度 l:左子树的深度
int r,l;
//若当前节点等于空,则深度为0,直接返回
if(pRoot==NULL)
return 0;
//如果左子树和右子树都为空,则说明只有一层,返回1
if(pRoot->left==NULL&&pRoot->right==NULL)
return 1;
//分别计算左右子树的深度,计算方式为递归调用
r=TreeDepth(pRoot->right);
l=TreeDepth(pRoot->left);
//将最大深度返回
if(r>l)
return 1+r;
else
return 1+l;
}