二叉树的特殊性质可以让查找方式更加迅速
一、基本概念
1.二叉查找树
指二叉树中的每一个结点的键值都大于其左子树中所有结点的键值,同时都小于其右子树中所有结点的键值
2.性质
(1)没有键值相等的结点
(2)以每一个结点为根结点所构成的子树都是二叉查找树
(3)对二叉查找树进行中根遍历,得到一个单调递增的序列
3.类型定义
typedef struct bstNode {
int key;
bstNode* lc, * rc;
bstNode():lc(NULL),rc(NULL){
}
}*bstTree;
二、二叉查找树的操作
1.查找操作
1.算法1-1:基于二叉查找树的查找
功能
在给定二叉树t中查找键值为k的结点
算法步骤
(1)如果t为空,则不存在值为k的结点,查找结束;否则根据根结点的键值 k 1 k_1 k1与k的比较结果分三种情况
(2)如果 k = k 1 k=k_1 k=k1,则找到结点,查找结束
(3)如果 k < k 1 k<k_1 k<k1,则在t的左子树中查找,进入第一步
(4)如果 k > k 1 k>k_1 k>k1,则在t的右子树中查找,进入第一步
代码
//在二叉查找树t中查找键值为k的结点,查找结果作为返回值
bstNode* bst_search(bstTree t, int k) {