给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
这一题尝试使用递归来解决问题,但是在确定返回值的时候感觉出现了问题,因此先去看视频学习:
后序遍历求高度,高度判断是否平衡 | LeetCode:110.平衡二叉树_哔哩哔哩_bilibili
首先按照视频里的做法,直接在求深度的函数中检查是否是平衡二叉树,即如果检测到左右数差值绝对值大于1 则直接返回-1:
然后再按照自己的理解写一遍:
先求高度,在主函数中判断,返回值为布尔值。当root为空是肯定是平衡二叉树直接返回True,当左右子树高度差绝对值大于1返回False。然后进行后序遍历,也通过了。
给你一个二叉树的根节点 root
,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
递归中带着回溯,你感受到了没?| LeetCode:257. 二叉树的所有路径_哔哩哔哩_bilibili
这是需要使用回溯算法需要解决的题目,因为需要记录以根节点为起点的所有路径,所以需要使用前序遍历,并且设置path数组记录路径,result数组添加结果,这是一道真正的回溯算法题,第一次做感觉有点难,需要后续不断练习才行。
给定二叉树的根节点 root
,返回所有左叶子之和。
本来是一道很简单的题,但是题目表述却非常绕,例子也给的少所以有点不明所以,画图搞懂以后就明白了,我们等一个结点有左孩子,且这个左孩子没有孩子结点的时候,这个孩子结点就是左叶子。
我选择定义一个全局变量进行累加,老样子当root为空返回0 , 如果符合要求用全局变量进行累加即可:
注意一定要是全局变量,不然在递归过程中会不断地重置了。遍历方式是使用前序后序我发现都可以,无非是搜索过程不一样罢了。
二叉树的题目中,总有一些规则让你找不到北 | LeetCode:404.左叶子之和_哔哩哔哩_bilibili