给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
1 | 3 |
返回它的最大深度 3 。
方法一:递归(DFS)
1 | /** |
复杂度分析:
- 时间复杂度为O(n);
- 最好的空间复杂度为O(log n),最坏的空间复杂度为O(n)。
方法二:迭代(DFS)
思路:令depth表示二叉树的深度。
对二叉树执行后序遍历,遍历的同时,将depth与当前节点所在的层数h(=父结点所在的层数+1)进行比较,新的depth = max(depth, h)。
1 | /** |
复杂度分析:时间复杂度和空间复杂度均为O(n)。其中,n为二叉树中结点的个数。
方法三:层次遍历(BFS)
思路:参考《剑指Offer》32-II.从上到下打印二叉树,对二叉树执行层次遍历,统计二叉树的层数。
1 | /** |
复杂度分析:时间复杂度和空间复杂度均为O(n)。其中,n为二叉树中结点的个数。