二叉搜索树:原理、遍历与逻辑规范
1. 线性链表搜索的局限与二叉搜索树的引入
在存储有序信息时,线性链表有一定优势,但搜索长列表时存在明显缺点。对整个列表中的所有节点进行顺序或线性搜索是 $O(N)$ 操作。而在有序数组中,二分搜索能以 $O(log_2N)$ 的时间复杂度找到元素。虽然我们希望能在链表中使用二分搜索,但实际上很难找到链表节点的中点。不过,我们可以将列表元素重新组织成一种非常适合二分搜索的链表结构,即二叉搜索树。它保留了链表的灵活性,同时在平均情况下允许以 $O(log_2N)$ 的时间复杂度访问列表中的任何节点。
2. 树的基本概念
树是一种非线性结构,与单链表不同,单链表中的每个节点只能指向另一个节点,是线性结构,而树中的每个节点可以有多个后继节点,称为子节点。树有一个唯一的起始节点,称为根节点。树可用于表示数据项之间的层次关系,例如教科书的章节结构、Java 类的层次继承关系以及蝴蝶的科学分类等。
树具有递归性,任何树节点都可以看作是其自身树(即原树的子树)的根。树的子树是不相交的,即它们不共享任何节点,这意味着从树的根到任何其他节点都有唯一的路径,除根节点外,每个节点都有唯一的父节点。不符合此规则的结构就不是树。
树的特点总结
- 有唯一的起始节点(根节点)。
- 每个节点可以有多个子节点。
- 从根到每个其他节点有唯一路径。
3. 二叉树
二叉树是一种特殊的树,其中每个节点最多可以有两个子节点,分别称为左子节点和右子节点。如果一个节点没有子节点,则称为叶节点。
超级会员免费看
订阅专栏 解锁全文
2536

被折叠的 条评论
为什么被折叠?



