树和森林与二叉树的转换、树和森林的遍历

全部数据结构、算法及应用课内模板请点击:https://blog.csdn.net/weixin_44077863/article/details/101691360

树和森林转二叉树其实十分简单,我们简单讲一下就好

遵从的方式非常简单,就是左子右兄弟法

树转二叉树:

=>

森林转二叉树:

=>

=>

接下来就是二叉树还原为树、森林了,不过道理也是一样的,非常简单,我们也不多讲了

就是右儿子变回兄弟即可

说到这里就想起同学们常问的一个问题,对于树如果只有右儿子这时候的转换不就会出BUG了吗

所以说,这样一个问题问出来真的很奇怪,首先是树多个儿子也没什么左右

虽然儿子间确实有顺序,但是说没有第一个哪来的第二个,只有一个就是第一个,所以这问题问的就很奇怪

扯远了,不多说了。

接下来要说的就是树和森林的周游(遍历)了

树和森林的遍历方式分为

深度优先遍历(DFS)和广度优先遍历(BFS)

其中DFS又包括先根次序和后根次序

非常简单,先根就是先访问根,再依次访问各子树,后根就是先依次访问完各子树然后最后再访问根,没啥可说的,不说了

再就是,书上还讲到了树的存储

(1)多重链表的孩子表示法(我寻思现在的教材都不讲vector可真是有够弱的)

(2)孩子兄弟表示法(就是左子右兄弟)

(3)双亲表示法(随便把这些点存到数组里,然后每个点都记录下父亲即可,树里面这么干确实不咋好。。感觉有点当并查集用了。。。)

放几张图简单看一下就行了

发布了49 篇原创文章 · 获赞 0 · 访问量 1705

猜你喜欢

转载自blog.csdn.net/weixin_44077863/article/details/103181723