首页 > 其他分享 >力扣(leetcode) 104.二叉树的最大深度 (详细步骤分解递归)

力扣(leetcode) 104.二叉树的最大深度 (详细步骤分解递归)

时间:2022-10-27 20:08:36浏览次数:78  
标签:node getDepth 递归 力扣 depth 二叉树 深度 回退 leetcode


题目在这:​​https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/​

思路分析:

找二叉树的最大深度,用递归比较好理解也比较好想。遍历左子树,遍历右子树。回退的时候记得加1。
递归出口:当前指针为null。

力扣(leetcode) 104.二叉树的最大深度 (详细步骤分解递归)_子树


用上面的这个图来做个例子说明一下。

其中一个左子树递归到最后肯定是指针指向了8。

1.8的左孩子为null,所以回退到8这个节点。

2. 8的右孩子也为null,所以回退到8这个节点。

3. 而8的左右都是null所以为0。而此时从左右为空回退到了8,所以此时深度+1。

即 max(左子树,右子树) + 1

4.同理7的深度也是标记为1。

5. 所以 回退到3 的时候 选8和7之间深度最大的再加1 。这时候3的深度标记为2。

6. 同理,右子树的4深度也标记为2.

7. 递归回退到2。2的左子树3,和2右子树4,的深度标记都为2,所以选则左右子树中较大的深度标记数加一,就是3。

即该数最大深度为3.

有了上述分析帮助理解,递归代码就很好写。

完整代码

def getDepth(node: TreeNode):
if not node:
return 0
left_depth = getDepth(node.left)
right_depth = getDepth(node.right)
depth = 1 + max(left_depth, right_depth)
return depth
return getDepth(root)


标签:node,getDepth,递归,力扣,depth,二叉树,深度,回退,leetcode
From: https://blog.51cto.com/u_15849381/5801731

相关文章