- (1)SearchBST(T、キー)疑似コード:
SearchBST(T, key) {
if (T为空) {
return 0;
}
else
{
if (key < T->data) {
向T的左孩子查找;
}
else {
向T的有孩子查找;
}
}
return T;
}
(2)SearchBST(T、キー)実装コード:
SearchBST(T, key) {
if (T==NULL) {
return 0;
}
else {
if (key < T->data) {
T = T->lchild;
}
else {
T = T->rchild;
}
}
return T;
}
- (1)InsertBST(T、key)擬似コード:
void InsertBST(BiTree T, int key) {
BiTree p;
为插入p节点创建结点空间;
p->data = key;
令p->lchild = p->rchild = NULL;
if (T为空) {
T = p;
}
else {
if (T->data == p->data) {
return;
}
else if (p->data< T->data) {
将key插入到T的左孩子;
}
else {
将key插入到T的右孩子;
}
}
(2)InsertBST(T、key)実装コード:
viod InsertBST(BiTree T,int key) {
BiTree p = new BiTNode;
p->data = key;
p->lchild = p->rchild = NULL;
if (T == NULL) {
T = p;
}
else {
if (T->data == p->data) {
return;
}
else if (p->data < T->data) {
InsertBST(T->lchild, key);
}
else {
InsertBST(T->rchild,key);
}
}
}
- (1)CreateBSTの疑似コード(T):
void CreateBST(BiTree T) {
令树为空
int i;
for (i = 0; i < MaxSize; i++) {
输入建树数据a;
插入二叉树T;
}
return T;
}
(2)CreateBST(T)の実装コード:
void CreateBST(BiTree T) {
T = NULL;
int i;
for (i = 0; i < MaxSize; i++) {
int a;
cin >> " " >> a;
InsertBST(T, a);
}
return T;
}
**注:
ノードを削除し、削除されたツリーに戻りたい場合:削除する前に、まずノードのタイプを判別する必要があります。