先序遍历(先访问根结点):先访问根节点、再先序访问左子树,再先序访问右子树。
中序遍历(中间访问根结点):中序遍历左子树、再访问根节点、再中序遍历右子树。
后序遍历(最后访问根节点):先后序遍历左子树、再后序遍历右子树、再访问根节点。
已知先序、中序、后序、序列中的一种,都无法还原出原始的二叉树。只有通过先序和中序或通过中序和后序,才能唯一的确定一个二叉树。先序和后序不行。
例子:先序ABCDEFGH 中序:BDCEAFHG 求后序:DECBHGFA
应用:树是数据库中数据组织一种重要形式。
操作系统子父进程的关系本身就是一棵树。
面向对象语言中类的继承关系就是一棵树。
先序遍历过程参考Leetcode 最小公共祖先的solution:
https://leetcode.com/explore/learn/card/data-structure-tree/133/conclusion/932/
Java中,A aa = new A(); new出来的对象是动态分配的内存,用malloc函数实现。
排序是查找的前提。稳定性:若甲和丙相等且甲在前面,则排序后甲也应该在前面。