题目
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例1:
给定二叉树 [3,9,20,null,null,15,7]
,
1 | 3 |
返回它的最大深度 3 。
解法
解法一:递归求解
分别求出左右子树的最大深度,最后加一就行。
Java
1 | public int maxDepth(TreeNode root) { |
解法二:借助栈
我们还可以在栈的帮助下将上面的递归转换为迭代。
使用 DFS 策略访问每个结点,同时在每次访问时更新最大深度。
所以我们从包含根结点且相应深度为 1 的栈开始。然后我们继续迭代:将当前结点弹出栈并推入子结点。每一步都会更新深度.
Java
1 | public int maxDepth(TreeNode root) { |