Data Structures(四) 二叉树

一、树的定义

我们之前在将的都是一对一的线性结构,而树是一种一对多的数据结构,属于非线性结构。树是一个n各节点的有限集合。n=0时为空。有且仅有一个特定的根节点。它的子树互不相交。

结点的分类:

一个节点拥有的子树的数量称为节点的度。度为0的节点称为叶子结点。树的度是树内节点的度的最大值。

结点的关系:

结点的子树的根称为节点的孩子,相应的该节点对于孩子节点为双亲结点。同一个双亲结点的孩子称为兄弟节点

树的其他概念:

结点的层次从根节点开始,根为第一层,根的孩子为第二层。。。树中节点的最大层数称为数的深度。

二、二叉树(重点)

一般人们研究二叉树的比较多。所以重点介绍二叉树。

二叉树也是一棵树,是由一个根节点和两颗不相交的分别称为左子树和右子树组成。

二叉树的特点:

1、每个节点最多有两颗子树,所以二叉树中不存在度大于2的节点。

2、左子树和右子树都是有序的,不能任意颠倒位置。

3、即使数的结点只有一个子树,也要区分是左子树还是右子树。

二叉树有5种形态:

1、空二叉树

2、只有一个根节点

3、根节点只有左子树

4、根节点只有右子树

5、既有左子树也有右子树

所以相同结点可以有很多种不同形态的二叉树。

特殊二叉树:

1、斜树:所有结点只有左子树或右子树

2、满二叉树:所有分支节点都存在于左右子树上,并且所有叶子结点都在同一层。

3、完全二叉树:一颗有n个结点的二叉树按层序编号,如果编号为i的结点与同深度的满二叉树中编号为i的结点在满二叉树中位置完全相同,则这课二叉树称为完全二叉树。

完全二叉树的特点:

1、叶子结点只能出现在最下两层,且集中在左部连续位置。

2、倒数第二层的叶子结点一定在右部。

3、结点度数为1,则该结点只有左孩子,不存在右子树的情况。

4、同样结点的二叉树,完全二叉树的深度最小。

 

二叉树的性质:

1、在二叉树的第i层上之多有2的i-1次方个结点。

2、深度为k的二叉树至多有2的k次方-1个结点。

3、对任何一个二叉树,其叶子结点数为n1,度为2的结点个数n2,都有n1=

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rust数据结构是指在Rust编程语言中可以用于存储和组织数据的不同方式和类型。Rust提供了许多内置的数据结构,同时也可以使用各种第三方库来扩展这些数据结构。 常见的Rust数据结构包括: 1. 向量(Vectors):向量是一个动态长度的数组,可以在其中存储任意类型的数据。向量可以动态增长或缩小,也可以按索引访问元素。 2. 哈希映射(Hash Maps):哈希映射是一种键值对的数据结构,其中每个键都与一个唯一的值相关联。哈希映射的插入和查找操作的时间复杂度通常为O(1),因此在需要快速查找或数据去重的场景中非常有用。 3. 字符串(Strings):Rust中的字符串是一系列Unicode标量值的集合。它们可以通过字面量、转换或动态构建来创建和操作。Rust还提供了许多与字符串相关的方法和操作符。 4. 切片(Slices):切片是对数组或向量的引用,允许您引用整个集合或仅引用集合的一部分。切片非常适用于通过传递指定范围的数据来减少内存占用和提高性能的情况。 此外,还有很多其他数据结构可以在Rust中使用,例如堆栈、队列、链表等。Rust还提供了许多强大的工具和概念,如所有权、借用和生命周期,这些可以帮助开发人员安全地管理数据结构的访问和修改。 通过使用各种数据结构,Rust为开发人员提供了灵活和高效的方式来存储和操作数据,使他们能够更轻松地构建稳健和高性能的应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值