树与二叉树的相互转换详解

348 阅读2分钟

作者:老九—技术大黍

社交:知乎

公众号:老九学堂(新手有福利)

特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者授权

前言

在树的实际应用(如文件目录树)中,我们会对树的结点进行数据操作,例如添加文件目录或者删除文件结点等。但在实现过程中发现,直接对树形结构操作会非常困难,因此通常会采用孩子兄弟表示法来表示树,然后转换成二叉树进行结点的操作。操作完成以后,再将修改后的二叉树还原为树形结构。接下来,我们来看一看如何实现两者之间的相互转换:

使用孩子兄弟表示法表示树:

image-20210326100424752.png

先序遍历创建树:

image-20210326100530669.png

树的先序遍历:

image-20210326100601409.png

树的层序遍历辅助队列:

image-20210326100736944.png

树的层序遍历算法:

image-20210326100802831.png

使用二叉链表表示二叉树:

image-20210326100840894.png

二叉树的创建:

image-20210326100917564.png

二叉树的先序遍历算法:

image-20210326100942033.png

二叉树的层序遍历辅助队列:

image-20210326101003061.png

二叉树的层序遍历算法:

image-20210326101033824.png

示例代码:

image-20210326101113241.png

输入数据:

image-20210326101141989.png

运行结果:

image-20210326101205373.png

二叉树转化为树

示例代码:

image-20210326101433127.png

输入数据:

image-20210326101526416.png

运行结果:

image-20210326101600139.png

总结

关于数据结构这个东西,百度一下一大堆,大家都可以参考。我们给出自己曾经非常细心的研究过程,希望能够帮助到那些入坑数据结构和算法的童鞋们。

最后

感觉有用的同学,请记得给大黍❤️关注+点赞+收藏+评论+转发❤️

作者:老九学堂—技术大黍

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。