树和二叉树的遍历区分
树的遍历
1.先根遍历(若树非空)
先访问根结点,再依次访问根结点的每棵子树。遍历的时候也需要遵循先根后子树的规则。相当于二叉树的先序遍历。
2.后根遍历(若树非空)
先依次访问根结点的每棵子树,再访问根结点。遍历的时候也需要遵循先子树后根的规则。相当于二叉树的后序遍历。
举个例子
经常有小伙伴搞不清为什么树的遍历和二叉树遍历的区别。其实总体上,二叉树是树的一种特例。所以二叉树也满足树的两种遍历方式,只不过因为二叉树分左右两子树,所以有了一种新的遍历方式—中序遍历。
我们记忆这两种的时候,只需要先搞清楚树的两种遍历,再另外记住二叉树的中序遍历方式就行了。
森林
1.先序访问森林(森林非空)对应树的先根遍历
先访问森林中第一棵树的根结点。
先序遍历第一棵树中根结点的子树森林。
先序遍历除去第一棵树之后剩余的树构成的森林。
2.中序访问森林(森林非空)对应树的后根遍历
中序遍历第一棵树中根结点的子树森林。
访问森林中第一棵树的根结点。
中序遍历除去第一棵树之后剩余的树构成的森林。
举个例子
森林就像树的遍历一样,只不过如果遍历的森林里不止一棵树,那就得遍历多棵树。
森林也可以先转化成二叉树,再进行遍历
(下图的二叉树是由上图转化而来)
最后
部分教材会把森林的中序遍历或后根遍历。其实这两者是等同的。中序遍历这种说法是相对于二叉树而言(将森林转化成二叉树后的后根遍历相当于二叉树的中序遍历)。而后根遍历是相对于其本身而言的,在后根遍历中根确实是最后才被访问的。