递归训练一:Leetcode 104.二叉树的最大深度
题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
原题目链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
题解
这里我需要说一下,做二叉树相关的题,你需要的最少技能是,
1、得知道啥是二叉树
2、掌握二叉树的前中后序遍历 + 层序遍历
如果这些都不懂的,我建议你先去学一学。
解法一:从上到下计算(前序遍历)
1、从根节点开始,每下降一层,就将深度+1
2、用全局变量来记录下最大深度
3、每当达到叶子节点时就与全局变量进行比较和更新
解法二:从下到上计算机(后序遍历)
1、若我们知道两个叶子节点的长度,那么我们就能通过两个叶子的最大深度再+1,得到根节点的最大深度。
2、而这种先知道两个子节点,再知道根节点恰好符合后序遍历的特点,具体看代码
解法三:层序遍历
1、使用队列来存放节点
2、一开始先知道当前层数的节点个数,然后根据个数出队,并对其孩子节点入队
评论(3)
根节点的深度为0吗
不好意思看错了,没看到 root null这个判断条件
根节点深度为0吗