数据结构——二叉查找(排序)树

二叉排序树又称二叉查找树,它可以是一棵空树,若非空时具有以下性质:

  • 若根结点的左子树非空,则左子树上的所有结点的关键字均小于等于根节点的关键字值;
  • 若根结点的右子树非空,则右子树上所有的结点的关键字均大于等于根节点的关键字值;
  • 根结点的左、右子树也是二叉排序树;

什么是前驱和后继:

  • 结点的前驱:是该结点的左子树中的最大结点;
  • 结点的后继:是该结点的右子树中的最小结点;

  也就是在中序遍历中,结点前、后的结点,就是结点的前驱和结点的后继。

其它请看这篇精彩博文,不再重复造轮子。

时间: 2024-08-11 07:41:46

数据结构——二叉查找(排序)树的相关文章

树·二叉查找树ADT(二叉搜索树/排序树)

1.定义 对于每个节点X,它的左子树中所有的项的值小于X的值,右子树所有项的值大于X的值. 如图:任意一个节点,都满足定义,其左子树的所有值小于它,右子树的所有值大于它. 2.平均深度 在大O模型中,二叉查找树的平均深度是O(logN) . 证明:查找某个节点x的算法深度,即从根出发找到节点x的路径长.所有查找的平均深度,就是平均内部路径长. 假设二叉查找树共N个节点,假设左子树有i个节点,则右子树节点数目:N-i-1. 假设D(N)表示具有N个基点的内部路径长.则N个节点的树的内部路径长:D(

二叉平衡排序树的基本操作

//定义数据类型   #define  MAXSIZE = 100; #define OK  1; #define ERROR 0; typedef int status; typedef int ElemType; //平衡二叉排序树的结构 typedef struct Tnode { ElemType data; struct Tnode *lchild,*rchild; int height;          //以该节点为根的子树的高度 }BBTnode,*BBTree; typede

二叉查找(排序)树的分析与实现

二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树. 图from baike 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值: (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值: (3)左.右子树也分别为二叉排序树: (4)没有键值相等的节点. 步骤:若根结点的关键字值等于查找的关键字,成功.否则,若小于根结点的关键字值,递归查左子树.若大

数据结构——二叉搜索树、B树、B-树

数据结构——二叉搜索树.B树.B-树 1. 综述 二叉排序树(Binary Sort Tree),又叫二叉查找树(Binary Search Tree),也叫二叉排序树. 二叉搜索树满足以下性质: 1. 若根节点左子树不为空,则左子树上的所有节点均小于根节点: 2. 若根节点右子树不为空,则右子树上的所有节点均大于根节点: 3. 其左右子树也是二叉搜索树(递归定义): 4. 没有键值相等的点. B树就是B-树.B树/B-树英文叫B-Tree,可能被不小心翻译成了B-树.

数据结构-二叉搜索树与双向链表

题目:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 分析:首先不能创建新的结构,只能在树的前提下进行改变指针的指向.又由于是二叉搜索树,可以通过画图分析可知,二叉搜索树的左子树小于根节点小于右子树,可以发现是个递归过程也是一个中序遍历.所以只需要在中序那块进行指针调整. /* 剑指offer面试题27 */ #include <iostream> using namespace std; struct BinaryTree{

算法导论 第三部分——基本数据结构——二叉搜索树

一.什么是二叉搜索树 二叉查找树是按照二叉树结构来组织的,因此可以用二叉链表结构表示.二叉查找树中的关键字的存储方式满足的特征是:设x为二叉查找树中的一个结点.如果y是x的左子树中的一个结点,则key[y]≤key[x].如果y是x的右子树中的一个结点,则key[x]≤key[y].根据二叉查找树的特征可知,采用中根遍历一棵二叉查找树,可以得到树中关键字有小到大的序列. 二叉树的查找.最大/小.前驱和后继的伪代码: 复杂度都是 h //search 递归版 TREE_SEARCH(x,k) if

数据结构——二叉排序(查找、搜索)树

2. 二叉排序树 2.1 二叉排序树(又叫二叉搜索.查找树) 性质: 若左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值: 左.右子树也分别为二叉排序树. 数列的顺序不同创建出来的二叉排序树是会不一样的! (65 ,32,87, 46,71,98, 39) 每一层数字的顺序是可以换的,32和87是可以换的.          (32,39,46,65,71,87,89)    如果实际应用中遇到相同的值,那么向左向右插入都可

二叉 查找树 排序树 搜索树

二叉查找树 _ 二叉排序树 _ 二叉搜索树_C++ 一.数据结构背景+代码变量介绍 二叉查找树,又名二叉排序树,亦名二叉搜索树 它满足以下定义: 1.任意节点的子树又是一颗二叉查找树,且左子树的每个节点均小于该节点,右子树的每个节点均大于该节点. 2.由1可推出,任意节点的左孩子小于该节点,右孩子大于该节点 以上讨论的是左(右)孩子(子树)存在的情况 它的中序遍历是一个升序的排序 在参考代码中,我们定义有: 主程序中,k代表插入或删除或查找的节点的值 root,根节点位置:a[i],第 i 号节

[数据结构]二叉搜索树(BST) VS 平衡二叉排序树(AVL) VS B树(平衡多路搜索树) VS B+树 VS 红黑树(平衡二叉B树)

1 二叉排序树/二叉查找树/Binary Sort Tree 1种对排序和查找都很有用的特殊二叉树 叉排序树的弊端的解决方案:平衡二叉树 二叉排序树必须满足的3条性质(或是具有如下特征的二叉树) 若它的左子树不为空,则:左子树上所有结点的值< 它根结点的值 若它的右子树不为空,则:右子树上所有结点的值 > 它根结点的值 它的左子树.右子树也分别为二叉排序树(递归性) (按照如上定义,即: 1 无键值相等的结点 2 中序遍历一颗二叉树时,可得一个结点值递增的有序序列) 2 平衡二叉排序树/Bal