算法打卡day19-二叉树的深度

84 阅读1分钟

描述

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 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;
}