《数据结构导论》之树

   周四晚上参加交流会,最后一个环节是12期的同学进行技术分享,这次大家分享的是《树》。看见这个标题,我打算走了,因为这个知识点自考和软考都会考,也一直在学习,所以不想继续听下去了,自己下去再学习一下就OK了。正想着起身离开的时候,一个师妹问了一句:什么是树啊?树是用来做什么的?台下有小伙伴说,给大家先解释一下“节点”吧。于是我在大脑里开始想这几个问题的答案:树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
    每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树;
    正想要给大家解释一下,突然想到,师弟师妹还没有学习《数据结构导论》这样给大家解释,他们很难听懂。可是我该怎么给大家解释树呢?怎么讲才能更加通俗呢?

   第一,关于数据和数据结构

   数据:官方解释:数据是信息的载体,是用来描述客观事物属性的数,字符,以及所有能输入到计算机中并能够给程序识别和处理的符号集合。我的理解:联系我们使用是SQL数据库,各种信息:文字,图片,数字,字母,符号等都可以存入到数据库中,而不仅仅是数字。
    数据结构:官方解释:指数据对象及其相互关系和构造方法,它可以用一个二元组{D,R}表示。其中,D是某种数据对象,是数据结构中数据(称为结点)的非空有限集合;R是该对象中所有数据成员之间的关系的有限集合;我的理解:结构就像我们的房子上的房梁和砖瓦。砖瓦是数据对象,是同种类型的数据集合;房梁搭建在砖瓦之间,沟通每块砖瓦,代表砖瓦之间的相互关系;我把构造方式比喻成房屋的样式,房屋有多种建造方式,中式,西式,南方的轻巧灵秀式,北方的敦厚朴实式。

    第二,关于树

    上面说的,数据结构中结点之间的关系称为数据的逻辑结构,树(二叉树,查找树,平衡树等)就是这逻辑结构中的一种。树中的每个结点代表相同数据的集合;结点之间的连线代表数据集合之间的前后,左右关系;树的类型有很多种:二叉树,树等等,这就是构造方式。数据可以二叉树的形式联系起来,也可以其他的形式联系起来。

    第三,转换方式

1、树转换成二叉树;

  i.连线
  连接树中所有兄弟节点;
  ii.去线
  保留第一个兄弟结点与父节点的连线,断开其他兄弟结点与父结点的连线;
  iii.旋转45°;
  过程如图:
                                                 
   将二叉树转换为树就是它的逆过程:先逆时针旋转45°,断开所有右子树之间的连线,将结点与其左结点对应的父结点相连。
                 

2、森林转换成二叉树;                                                  

  i.将每棵树转换为二叉树;
  ii.第一棵树第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来。
             
                                             

3、二叉树转换成森林;

(1)从根节点开始,若右孩子存在,则把与右孩子结点的连线删除。再查看分离后的二叉树,若其根节点的右孩子存在,则连线删除…。直到所有这些根节点与右孩子的连线都删除为止。

(2)将每棵分离后的二叉树转换为树。

       

                                                                 


    数据结构未了存储和查找方便,用各种树结构来存储文件,了解了树的结构和之间的转换方式,可以更好理解在存储或查找时格式的变换,以上是我对树的一些理解,如文中会有不严谨的地方,如果影响大家理解,欢迎大家斧正。
参考文献:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 46
    评论
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王师傅66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值