05-5.4.2 树、森林和二叉树的转换

👋 Hi, I'm @Beast Cheng

👀 I'm interested in photography, hiking, landscape...

🌱 I'm currently learning python, javascript, kotlin...

📫 How to reach me --> 458290771@qq.com


喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻

感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀

谢谢大家!🙏

树 转 二叉树

转换技巧:

  1. 先在二叉树中,画一个根结点
  2. "树的层序" 依次处理每个结点(也就是 A − > B , C − > D , H , F , E , J , K − > G , I , L A->B,C->D,H,F,E,J,K->G,I,L A−>B,C−>D,H,F,E,J,K−>G,I,L
    处理一个结点的方法是:如果当前处理的结点在树中有孩子,就把所有孩子结点"用右指针串成糖葫芦",并在二叉树中把第一个孩子挂在当前结点的左指针下方

森林 转 二叉树

注意:森林中各棵树的根结点视为评级的兄弟关系

转换技巧:

  1. 先把所有的树的根结点画出来,再在二叉树中用右指针 串成糖葫芦
  2. "森林的层序" 依次处理每个结点

处理一个结点的方法是:如果当前处理的结点在树中有孩子,就把所有孩子结点"用右指针串成糖葫芦",并在二叉树中把第一个孩子挂在当前结点的左指针下方

二叉树 转 树

转换技巧:

  1. 先画出树的根结点
  2. 从树的根结点开始,按 "树的层序" 恢复每个结点的孩子

如何恢复一个结点的孩子:在二叉树中,如果当前处理的结点有左孩子,就把左孩子和 "一整串右指针糖葫芦" 拆下来,按顺序挂在当前结点的下方

二叉树 转 森林

转换技巧:

  1. 先把二叉树的根结点和 "一整串右指针糖葫芦" 拆下来,作为多棵树的根结点
  2. "森林的层序" 恢复每个结点的孩子

如何恢复一个结点的孩子:在二叉树中,如果当前处理的结点有左孩子,就把左孩子和 "一整串右指针糖葫芦" 拆下来,按顺序挂在当前结点的下方

相关推荐
齐 飞19 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
lulu_gh_yu33 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
丫头,冲鸭!!!1 小时前
B树(B-Tree)和B+树(B+ Tree)
笔记·算法
听忆.1 小时前
手机屏幕上进行OCR识别方案
笔记
Selina K2 小时前
shell脚本知识点记录
笔记·shell
2 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
~yY…s<#>2 小时前
【刷题17】最小栈、栈的压入弹出、逆波兰表达式
c语言·数据结构·c++·算法·leetcode
测试界萧萧2 小时前
外包干了4年,技术退步太明显了。。。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
霍格沃兹测试开发学社测试人社区3 小时前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
幸运超级加倍~3 小时前
软件设计师-上午题-16 算法(4-5分)
笔记·算法