#include<iostream>
#include<fstream>
using namespace std;
typedef int datatype;
typedef struct BiNode
{
datatype data;
struct BiNode *lchild, *rchild;
}BiNode, *BiTree;
BiTree Search1(BiTree T, int key) //递归查找BST中元素
{
if (T == NULL)
return T; //找不到则返回空节点
if (key < T->data)
return Search1(T->lchild, key);
else if (key > T->data)
return Search1(T->rchild, key);
else
return T; //找到则返回该节点
}
int Search2(BiTree T, int key, BiTree f,BiTree *P) //非递归查找BST中元素
{
/*需要保存被查找元素对应节点的父节点,在非递归的插入里面需要用到*/
if (T == NULL)
{
*P = f;
return false;
}
while (T != NULL)
{
*P = T;
if (key == T->data)
return true;
if (key < T->data)
T = T->lchild;
else if (key > T->data)
T = T->rchild;
}
return false;
}
bool InsertBST1(BiTree *T, datatype key) //递归插入二叉排序树
{
/* 插入成功返回TRUE,否则返回FALSE */
if (!(*T)) //不能用T == N
二叉排序树的查询、插入的递归和非递归代码
最新推荐文章于 2024-01-13 17:30:20 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)