二叉树的深度
JZ55 二叉树的深度
描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。
数据范围:节点的数量满足 0≤n≤1000≤n≤100 ,节点上的值满足 0≤val≤1000≤val≤100
进阶:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)
假如输入的用例为
1 | {1,2,3,4,5,#,6,#,#,7} |
那么如下图:
示例1
1 | 输入:{1,2,3,4,5,#,6,#,#,7} |
示例2
1 | 输入:{} |
题解
初见思路:死去的记忆开始攻击我了,不过言归正传,二叉树相关的最简单的思路就是递归,因为它本身就是一个递归构成的东西,所以只需要从最底层开始向上层层递加,左右子树选择更深的作为本身的深度返回即可。
几个注意点,树叶节点也有left和right指针,但是它们指向空,所以从最底部的空指针开始设深度为0递归就可以了,可以有效避免空指针导致的溢出。
代码
1 | /* |