LeetCode初级算法之树:104.二叉树的最大深度
题目信息
题目地址:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
1 | 给定二叉树 [3,9,20,null,null,15,7], |
概述
树的开篇第一题其实也是比较简单的,但它的目的是让我们初步认识树这样一个结构。二叉树每个节点有两个子节点也就是两个指针。大概结构如下:
1 | public class TreeNode { |
解法一:深度优先搜索(DFS)
递归的想法,最大深度 = 1 + Max( L0(left) , L0(right))。而每个子树再找到它最大的深度。下图就是这样一个过程,图中省略一些东西只画了一部分理解这样一个思路就ok
1 | public int maxDepth(TreeNode root) { |
解法二:广度优先搜索(BFS)
上面是递归,这里是迭代的方式,输入root节点判断是否存在存在则深度+1,再判断下一层节点(输入1层两个节点)对一个节点判断有无子节点,无则出,有则把它的子节点先加进来再出,注意这里是一个先进先出的关系(排队)因为是一层一层的遍历完
1 | public int maxDepth(TreeNode root) { |
总结
合集中树的第一题,总体来说熟悉树的基本结构体会遍历的操作
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 木瓜煲鸡脚's blog!
评论