[软考]之树和二叉树

        对于具有层次的数据,需要用树形结构来描述,那么什么是树,树应该如何表示使用呢?下面,就随着这篇博文,来感受一下树的魅力吧。


        树的基本组成:

        关于树的基本组成,先来看一下定义:

        树(tree)是包含n(n>0)个结点的有穷集,其中:
           (1)每个元素称为结点(node);
           (2)有一个特定的结点被称为根结点或树根(root)。
           (3)除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树(subtree)。


        我在网上找了几张表示树的图,大家可以看一下,帮助理解:


           


         说完了树,顺便提一下森林,森林是m(>=0)棵互不相交的树的集合,树的每个结点的子树是森林,删除一个非空树的根结点,它的子树便构成森林,比如上图中的3号树,将它的根A删除,那么以B为根和以C为根的两棵互不相交的树便构成了森林。

        树的相关术语:

         对于树,我们有一些比较专业的叫法来称呼它的各个部位,比如结点的度,叶子,树的度等等,下面仍旧用一张图来表示:

                                                                                         

                      二叉树:


        我们所说的二叉树,就是树的一中特殊结构,即由一个根及两棵互不相交的左子树和右子树组成,其中左子树和右子树也均为二叉树,简而言之,任何一个结点的孩子,都不超过两个。二叉树有5个性质,即:


          1.在二叉树的第i层上最多有2 i-1 个节点 。

          2.二叉树中如果深度为k,那么最多有2k-1个节点。

          3.n0=n2+1  n0表示度数为0的节点 n2表示度数为2的节点。

          4.在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]+1是向下取整。

          5.如果有一颗有n个节点的完全二叉树的节点按层次序编号,对任一层的节点i(1<=i<=n)有

              1.如果i=1,则节点是二叉树的根,无双亲,如果i>1,则其双亲节点为[i/2],向下取整  

              2.如果2i>n那么节点i没有左孩子,否则其左孩子为2i

              3.如果2i+1>n那么节点没有右孩子,否则右孩子为2i+1


        二叉树也分为几种类型,分别为:满二叉树,完全二叉树和非完全二叉树,我们直接上图来看:

                 

满二叉树即满足深度为K且有2^K-1个结点。完全二叉树是从满二叉树的结构来判断的,即:一颗深度为k二叉树,有n个节点,然后,也对这棵树进行编号,如果所有的编号都和满二叉树对应,那么这棵树是完全二叉树。附图一张:

           

  这就是树和二叉树的基本概念和组成标准了,下面一篇博文我们会讨论对于二叉树的遍历和一些计算,未完待续哦~

            

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

盖丽男

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

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

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

打赏作者

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

抵扣说明:

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

余额充值