树和二叉树的基本结构与性质

1 篇文章 0 订阅
1 篇文章 0 订阅

树形数据结构是一种非线性的数据结构,把它叫做树,是因为这种数据结构的形态很像一颗倒着的树。树和链表类似,通过节点来存放数据,用不同的方法来表示树,节点的域也会有所不同。

树有很多基本的属性和性质,这里先介绍一些常用的:

·根节点:树起始的第一个节点,根节点没有父亲节点。

·子节点:一个节点向下分出的节点称为该节点的子节点,例如节点b就是节点a的子节点。

·父亲节点:分出子节点的节点,称为这个子节点的父亲节点,a就是b的父亲节点。

·节点的度:每一个节点分出来的子节点的个数叫做这个节点的度,如图,c节点的度为2,b节点的度为1。

·边:节点向下生成的分支个数叫边,列如b生成了一条边,a生成了两条边,树中边的总数为节点总数减一。

·树的度:树的度就是这个树中度最多的节点的度。

·节点的层次:根节点所在的层次为第一层,根节点的子节点所在为第二层,依次类推。

·树的高度:树中层次最大的节点的层数就是树的高度。

·叶子节点:没有子节点的节点称为叶子节点,如图节点d、e、f。

·兄弟节点:同属一个父亲节点的节点互相称为兄弟节点,例如b和c、e和f互为兄弟节点。

树由根节点分散出若干子节点,每一个子节点又可以分散出它的子节点。树的每一个节点除了与它的父亲节点相连之外,不会再与其他的节点相连,否则就不叫树。

二叉树是一种特殊的树形结构,普通的树,每一个节点都可以分出若干个子节点,0个、1个、或者7个、8个。而二叉树每一个节点分出的子节点只能有三种情况:0、1、2。

二叉树中又有两种特殊的情况:满二叉树和完全二叉树。满二叉树指的是二叉树中每一层都必须放满。完全二叉树指每一次分出子节点,都必须是从左往右依次分出。

任意一个二叉树,都可以由边数S等于节点数N减1和二叉树的节点总数等于度为0的节点数n0加上度为1的节点数n1加上度为2的节点数n2,推导出n0 = n2 + 1,即叶子节点数为度为2节点数加1。

在满二叉树中,因为每一层都必须放满,通过等比数列求和能很容易的得到,有K层的满二叉树,其节点总数就为2^K - 1。这样就可以反推出n个节点的满二叉树的层数K = log2(n+1);完全二叉树同样可以用这个公式来推出n个节点的完全二叉树的层数,但是需要对结果进行向上取整。

因为完全二叉树是由上而下、从左到右依次分出子节点,所以当我们将根节点编号为0,然后向下依次给子节点编号,那么第i个节点的父节点的编号就是(i - 1) / 2。第i个节点的左子节点编号就是2*i + 1右子节点编号为2*i + 2。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值