二叉树

深度优先(DFS)

分为中序,前序和后续,指的是中间节点的位置。

广度优先(BFS)

就是一层一层按照层级顺序遍历的,其实好简单的

做过的二叉树

二叉树的最大深度

二叉树的最大深度(10 分钟)—简单—递归
image.png

二叉树的前序遍历

二叉树的前序遍历(5 分钟)—中等—递归
image.png

二叉树的中序遍历

二叉树的中序遍历(3 分钟)—中等—递归
image.png

二叉树的后序遍历

二叉树的后序遍历(1 分钟)—困难—递归
image.png

二叉树的层次遍历

二叉树的层次遍历(5 分钟)—中等—递归
image.png
其实 BFS 可以用 DFS 来做的,就是加一个 level 的标记,我自己想到的。
当然也可以直接就 BFS 来做,多层数组,然后将下一层推入新的数组,迭代做。

对称二叉树

对称二叉树(10 分钟)—简单—递归
用的层次遍历加上字符串比对,感觉效率确实不高
image.png
看了答案,思路很好,就是对于左右子树对称,就是左子树的右子树等于右子树的左子树以及左子树的左子树等于右子树的右子树。很棒。

从中序与后序遍历序列构造二叉树

从中序与后序遍历序列构造二叉树(20 分钟)—中等—递归
这道题直接放弃看答案的,有意思,就是根据中序后序的特点来做的,很经典的题目
image.png

从前序与中序遍历序列构造二叉树

从前序与中序遍历序列构造二叉树(15 分钟)—中等—递归
和前一道一模一样,没啥好说的
image.png

二叉树的最近公共祖先

二叉树的最近公共祖先(30 分钟)—中等—递归
第一遍思路很简单,果然超时了。
image.png
看了答案,其实还是深度遍历,找到了就返回 1,当左中右第一次到 2 的时候就是结果,想明白了好简单

二叉树的序列化与反序列化

二叉树的序列化与反序列化(30 分钟)—困难—递归
原来完整的前序就可以恢复这颗树了,只要把空余的信息填好了。
image.png
看了答案,不看答案做不出来的。太变态了

二叉树的锯齿形层次遍历

二叉树的锯齿形层次遍历
10 分钟–中等–广度遍历
image.png

填充每个节点的下一个右侧节点指针

填充每个节点的下一个右侧节点指针(30 分钟)—中等—递归
image.png
只考虑了两层,没考虑全,可惜了,居然在递归内部还得有个循环才行,这种得死记了
用了下一题的思路,感觉简单多了,就是注意永远从右侧开始。

填充每个节点的下一个右侧节点指针 II

填充每个节点的下一个右侧节点指针 II(60 分钟)—中等—递归
放弃直接看的答案,感觉有点难了,其实好像不难,就是题目怎么要求,怎么写答案,很正统的解法
image.png
注意得从右侧开始遍历,因此是设置 next。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com

文章标题:二叉树

文章字数:823

本文作者:泽鹿

发布时间:2019-08-29, 17:16:26

最后更新:2019-09-02, 13:56:33

原始链接:http://panyifei.github.io/2019/08/29/算法/leetcode/二叉树/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏