• 树、森林与二叉树的转换


    原网站:

    http://student.zjzk.cn/course_ware/data_structure/web/shu/shu6.5.1.htm

    树、森林与二叉树的转换


         树或森林与二叉树之间有一个自然的一一对应关系。任何一个森林或一棵树可惟一地对应到一棵二叉树;反之,任何一棵二叉树也能惟一地对应到一个森林或一棵树。

    1.树、森林到二叉树的转换
    (1)将树转换为二叉树
         树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就能将树转换成相应的二叉树:
      ①在所有兄弟结点之间加一连线;
      ②对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。
    【例1】下面(a)图所示的树可转换为(c)图所示的二叉树。具体转换过程可【参见动画演示
         
             
      注意:
         由于树根没有兄弟,故树转化为二叉树后,二叉树的根结点的右子树必为空。

    (2)将一个森林转换为二叉树
     具体方法是:
      ① 将森林中的每棵树变为二叉树
      ② 因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。
    【例2】下图中,左边包含三棵树的森林可转换为右边的二叉树。 
             
           
    具体转换过程可参见动画演示】 

    2.二叉树到树、森林的转换
         把二叉树转换到树和森林自然的方式是:若结点x是双亲y的左孩子,则把x的右孩子,右孩子的右孩子,…,都与y用连线连起来,最后去掉所有双亲到右孩子的连线。
    【例3】下图的森林就是由例2中二叉树转换成的。  
             
           
    具体转换过程可参见动画演示
    today lazy . tomorrow die .
  • 相关阅读:
    conda 环境配置
    刨根问底 | MySQL 是如何利用索引的?
    Linux 服务器进程避免 OOM 的方法
    SQL Server中遇到tempdb突然暴涨怎么办?
    面试官:你能接受加班吗?
    TableLayoutPanel 有关合并单元格
    window批量去除文件名称空格
    第四周预习
    jar打包exe(exe4j)
    狄利克雷过程(Dirichlet Process)
  • 原文地址:https://www.cnblogs.com/france/p/4808584.html
Copyright © 2020-2023  润新知