存储结构
//元素类型
#define TypeElem int
typedef struct BSTNode {
TypeElem data;
struct BSTNode * lchild;
struct BSTNode* rchild;
}BSTNode,*BSTree;
函数声明
//创建一个节点
BSTNode* Create_Node(TypeElem key);
//创建二叉排序树
void Create_BST(BSTree& T,int n);
//查找值在二叉树中的位置
BSTNode* Search_BST(BSTree T, int val);
//查找该值在二叉树的父节点
BSTNode* Search_Pre_BST(BSTree T, int val);
//插入一个节点
void Insert_BST(BSTree node,int val);
//删除值为val的节点
void Delet_BST(BSTree& T,int val);
//中序递归遍历二叉树的所有节点
void InOrder(BSTree T);
查找函数
算法的基本思路:
- 若二叉排序树为空树,则查找失败。
- 将给定值key与根节点的关键字比较,若相等,则查找成功。
- 将给定值key小于根节点的关键字,则在左子树查找,否则在右子树查找。
代码:
//查找值在二叉树中的位置
BSTNode* Search_BST(BSTree T, int val) {
while (T) {
if (T->data == val)
return T;
else if (T->data < val)
T = T->rchild