• 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


    喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
    感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
    谢谢大家!🙏

    树 转 二叉树

    ![[Pasted image 20240617212806.png]]

    转换技巧:

    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
      处理一个结点的方法是:如果当前处理的结点在树中有孩子,就把所有孩子结点“用右指针串成糖葫芦”,并在二叉树中把第一个孩子挂在当前结点的左指针下方
      ![[Pasted image 20240617213231.png]]

    森林 转 二叉树

    注意:森林中各棵树的根结点视为评级的兄弟关系
    ![[Pasted image 20240617213731.png]]

    转换技巧:

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

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

    二叉树 转 树

    转换技巧:

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

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

    二叉树 转 森林

    转换技巧:

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

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

  • 相关阅读:
    CUDA环境配置问题
    蜂鸣器(51单片机)
    怎么实现在微信公众号预约挂号功能呢
    实验4:TELNET综合实验
    KDD‘22推荐系统论文梳理(24篇研究&36篇应用论文)
    LeetCode 周赛 345(2023/05/14)体验一题多解的算法之美
    Azide-PEG-Cholesterol,N3-PEG-Cholesterol,叠氮-PEG-胆固醇PEG试剂供应
    Linux C应用编程-1-文件IO
    Java实验案例(一)
    题解:P9426 [蓝桥杯 2023 国 B] 抓娃娃
  • 原文地址:https://blog.csdn.net/G2Esports_NiKo/article/details/139755897