《数据结构导论之树、二叉树、森林间的转换》

前言

    树、二叉树、森林间一共有三种转换,作为一种应用题的类型出现,小编在这里以真题为典型例证为大家撰写转换过程,愿为大家开阔思路,增添自考胜算。

 

基本概念

英文名字为Tree,一类重要的数据结构,是n(n≥0)个结点的有限集合。相关特征:

(1)当n=0时,即为空树

(2)当n>0时,有且仅有一个称为根的结点,除根结点外,其余结点分为m(m≥0)个互不相交的非空集合T1,T2,....,这些集合中的每一个都是一棵树,称为根的子树。


有图有真相:



二叉树


    英文名字为BinaryTree,n(n≥0)个元素的有限集合,该集合或者为空,或者由一个根及两棵互不相交的左子树和右子树组成,其中左子树和右子树也均为二叉树。


有图有真相:


 

森林

    英文名字为Forest,m(m≥0)棵互不相交的树的集合,树的每个结点的子树是森林。删除一个非空树的根结点,它的子树便构成森林。


有图有真相:


 

具体转换

 

树→二叉树

原理:


(1)将所有兄弟结点连接起来

(2)保留第一个兄弟结点与父结点的连接,断开其他兄弟结点与父结点的连接,

(3)以根结点为轴心按顺时针的方向旋转45°角


例证:


2014年10月

32.将题32图所示的一棵树转换为二叉树。


(1)将所有兄弟结点连接起来


(2)保留第一个兄弟结点与父结点的连接,断开其他兄弟结点与父结点的连接


 (3)以根结点为轴心按顺时针的方向旋转45°角


森林→二叉树

原理:


(1)将每棵树转换成相应的二叉树

(2)将得到的各棵二叉树的根结点看作是兄弟连接起来


例证:


此题由2011年10月的真题转化而来(目前没有考过这种转换)

将图所示的森林转换为对应的二叉树



(1)将每棵树转换成相应的二叉树


    →        


      →        



      →    

(2)将得到的各棵二叉树的根结点看作是兄弟连接起来




二叉树→森林

原理:


(1)在待转换的二叉树中,断开根结点与右孩子的连线,保留左孩子的连线,得到两棵二叉树

(2)将两棵二叉树中的孩子结点的右孩子分别与父结点断开,与根结点相连,成为最初根结点左孩子的兄弟结点

(3)将二叉树中的孩子结点的左孩子逆时针旋转45°


例证:


2011年10月

31.将题31图所示的一棵二叉树转换成森林


(1)在待转换的二叉树中,断开根结点与右孩子的连线,保留左孩子的连线,得到两棵二叉树

          →   


(2)将两棵二叉树中的孩子结点的右孩子分别与父结点断开,与根结点相连,成为最初根结点左孩子的兄弟结点

  →  


    


(3)将二叉树中的孩子结点的左孩子逆时针旋转45°


     →        



           →     

最终结果为:


    

结语

 

    树、二叉树、森林三者之间的转换中,自我认为树与二叉树之间转换是基础,二叉树→森林和森林→二叉树之间转换是以树→二叉树的转换前提的,只要理解其中的核心观念,无论在考试中以怎样的形式出现,大家都可以轻而易举做出来。愿大家自考加油哦


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 35
    评论
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值