在遇到相关树的时候,无非就会设计到树的遍历。
所以一定要记住遍历树的几种方法:
1. 深度优先遍历
深度优先,简单的说就是看到一条路可以走,就先把这一条路走到底。所以可以使用栈和递归来进行遍历。
使用栈(FIFO),就是判断当前结点是否子节点,有的话就把子节点进栈,然后操作。继续出栈,然后继续前面的操作。
2. 广度优先遍历
广度优先(FILO),简单的说,就是分层,一层一层的往下进行遍历。所以用队列(我只知道这个耶)来进行
下面三种遍历的非递归方式比较复杂,详情可转到我的之前写的另一篇文章 ->点这里
3. 前序遍历
NLR
- 先访问根节点
- 先序遍历左子树
- 先序遍历右子树
4. 中序遍历
LNR
- 中序遍历左子树
- 访问根节点
- 中序遍历右子树
5. 后序遍历
LRN
- 后序遍历左子树
- 后序遍历右子树
- 访问根节点
注:有时候后序和前序可以通过反转之类的方式相互转化得到想要的结果
写在最后
如果觉得本文对你有帮助的话,可以为我点个赞哈,你的关注和支持是我坚持下去最大的鼓励。
对文章有什么建议和意见,也欢迎留言告诉我,期待你的回馈。