代码随想录(13)二叉树(2)

 ZR_yst     2023-11-22     366     0   

欢迎来到银盒子的世界~

图片.png



嗷嗷嗷,到了层序遍历了,

stack.append(root),当stack存在,循环遍历此次的stack,由于语言特性,直接len(stack)就行,popleft,append左右孩子,当然判断一下是否存在,这是思路,然后根据题目要求更改

我说忘记了啥,层序遍历是用deque,


图片.png


图片.png



就是层序遍历,翻转输出


图片.png


图片.png

图片.png


上面是迭代法前序遍历(奇怪奇怪),下面写一下递归的前序遍历

图片.png


图片.png

对了对了,这道题,是比较的内侧相不相同,外侧相不相同,递归的话,后序,返回True or False,外侧是左的左,右的右,内侧是左的右,右的左,停止条件是一个左或右不存在,返回False,都不存在,返回True,或者值不相同,返回False

图片.png


图片.png


然后这些是后面补的层序遍历二叉树那些题


图片.png



图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png


图片.png

这道题,首先是popleft后,next就是[0]的节点,除非是到了最后一位,赋为None

图片.png


图片.png


图片.png


图片.png


两种解法。递归是后序遍历,取每次左右深度最大的一支,然后是层序遍历

图片.png


图片.png

易错点是(1)只有左右孩子都不在才能返回,否则就不是叶子节点(2)只有左孩子没有右孩子,返回左孩子的深度,否则是右孩子的深度,务必有这一步


图片.png

发表评论