全部数据结构、算法及应用课内模板请点击:https://blog.csdn.net/weixin_44077863/article/details/101691360
树和森林转二叉树其实十分简单,我们简单讲一下就好
遵从的方式非常简单,就是左子右兄弟法
树转二叉树:
=>
森林转二叉树:
=>
=>
接下来就是二叉树还原为树、森林了,不过道理也是一样的,非常简单,我们也不多讲了
就是右儿子变回兄弟即可
说到这里就想起同学们常问的一个问题,对于树如果只有右儿子这时候的转换不就会出BUG了吗
所以说,这样一个问题问出来真的很奇怪,首先是树多个儿子也没什么左右
虽然儿子间确实有顺序,但是说没有第一个哪来的第二个,只有一个就是第一个,所以这问题问的就很奇怪
扯远了,不多说了。
接下来要说的就是树和森林的周游(遍历)了
树和森林的遍历方式分为
深度优先遍历(DFS)和广度优先遍历(BFS)
其中DFS又包括先根次序和后根次序
非常简单,先根就是先访问根,再依次访问各子树,后根就是先依次访问完各子树然后最后再访问根,没啥可说的,不说了
再就是,书上还讲到了树的存储
(1)多重链表的孩子表示法(我寻思现在的教材都不讲vector可真是有够弱的)
(2)孩子兄弟表示法(就是左子右兄弟)
(3)双亲表示法(随便把这些点存到数组里,然后每个点都记录下父亲即可,树里面这么干确实不咋好。。感觉有点当并查集用了。。。)
放几张图简单看一下就行了