二叉树(Binary Trees)

二叉树


通常在一棵树中,树中的每个节点可能有任意数量的子节点。二叉树是普通树的一个特例,在二叉树中,每个节点至多有俩个子节点,其中一个成为左子节点,另外一个称为右子节点。

二叉树的属性


  1. 在非空二叉树中,第i层的结点总数不超过 2 ( i − 1 ) 2^(i-1) 2(i1) , i>=1;
  2. 深度为h的二叉树最多有 2 h − 1 2^h-1 2h1个结点(h>=1),最少有h个节点
  3. 对于任意一颗二叉树,如果其叶节点数为N0,而度数为2的节点总数为N2,则N0=N2+1;
  4. 具有n个节点的完全二叉树的深度为 [ l o g 2 n ] + 1 [log_2 n]+1 [log2n]+1

二叉树的表现形式


可以使用两种形式来表示二叉树

二叉树的数组表现形式

二叉树存储在一个一维数组中,根节点位于索引为0的位置,然后从左到右从上到下对元素进行编号,即使元素为空,也存储在数组中。

将每个节点相对于树中的索引放入数组中。

二叉树的链式表现形式

使用链表的形式来存储二叉树,树中的每个节点包含三个字段,数据域、左节点指针域和右节点指针域。叶子节点的左右两个指针均指向NULL,表示树的末端。

二叉树的类型


  1. 严格二叉树 一颗二叉树,其内部每个节点都有零个或者两个子节点,即树中的每个节点的度为0或者2
  2. 完全二叉树 一颗二叉树,其内部每个节点恰好有两个子节点,且所有的叶节点都处于同一级
  3. 扩充二叉树 通过使用虚拟节点来替换所有NULL子树来构成扩充二叉树。生成的树是一颗完全二叉树,其中每个节点刚好有两个子节点,每个外部节点都是一个叶子
  4. 线索二叉树 在线索二叉树中,所有左侧为NULL的左指针都指向其有序的前置;所有右侧为NULL的指针均指向其有序的后继者。通过使用线索二叉树,使得树的遍历更加快速。
线索二叉树的两种变体
  1. 单线索二叉树 如果存在右指针为空的节点,使其指向有序的后继者
  2. 双线索二叉树 使其左右为NULL的指针分别指向有序的前驱和后继,此情况下,对于树的反向遍历是非常有用的

更多内容,欢迎访问:


在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值