数据结构基础篇(4)--树

一、树的定义

树是n个节点的有限集。当n为0时称为空树。在任意一棵非空树中:(1)根节点是唯一的,不可能存在多个根节点(2)子树的个数没有限制,但是它们一定不相交。如下图所示:
树的结构

二、结点分类

结点拥有的子树树称为结点的度。度为0的结点称为叶节点或终端结点;度不为0的结点称为分支结点。除根节点之外,分支结点也称为内部结点。树的度是树内各节点的度的最大值。如下图所示:
image

三、树的其它相关概念

结点的层次从根开始定义起,根为第一层,根的孩子为第二层,其双亲在同一层的结点互为堂兄弟。树中结点的最大层次称为树的深度或者高度。如下图所示:
image

如果将树中结点的各子树看成从左到右是有次序的,不能互换的,则称该树为有序树,否则是无序树。
森林是m棵互不相交的树的集合。

四、树的存储结构

主要有三种双亲表示法、孩子表示法、孩子兄弟表示法,三种都很容易理解
(1)双亲表示法
image
首先定义根节点的位置设为-1,其它的层按顺序定义,比如说图中BCD位于第二层,parent为0,也就是A的数组下标。
这样我们很容易的通过结点的parent指针找到它的双亲结点,所用的时间复杂度为O(1)。

(2)孩子表示法
孩子表示法
图中指针的指向正是表示它的左右子节点。
优化后的双亲孩子表示法
双亲孩子表示法
此时既指明了该结点的双亲,同时表示出了它的孩子结点。

(3)孩子兄弟表示法
孩子兄弟表示法

分别表示data数据域、firstchild指针域(存储该结点的第一个孩子结点的存储地址)、rightsib指针域(存储该结点的右兄弟结点的存储地址)。

接下来我们就要介绍最重要的二叉树。

文章只是作为自己的学习笔记,借鉴了网上的许多案例,如果觉得阔以的话,希望多交流,在此谢过…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值