二叉排序树的实现

1. 编写SearchBST(T, key)与InsertBST(T, key)的伪代码,并实现;

SearchBST(T, key)

伪代码:

if (T为空 || T的值等于key)返回T
    if (T的值 > key)返回Search(T->lchid, key)
    if (T的值 < key)返回Search(T->rchid, key)

代码:

void Search(BiTree T, char key) {
    if (T == NULL || T->data == key)
       return T;
    if (T->data > key)
       return Search(T->lchild, key);
    else
       return Search(T->rchild, key);

}

InsertBST(T, key)

伪代码:

 if (T为空) {
        创建新的根节点
            新根节点的值为key
        }
    if (T == key)返回0
        if (T的值 > key)返回InsertBST(T->lchild,key)
            if (T的值 < key)返回InsertBST(T->rchild,key)

代码:

    if (T == NULL) {
        T = new BiTNode;
        T->data = key;
        T->lchild == NULL;
        T->rchild == NULL;
        return 1;
    }
    else if (T->data == key)
       return 0;
    else if (T->data > key)
       return InsertBST(T->lchild, key);
    else if (T->data < key)
       return InsertBST(T->rchild, key);
}

2. 编写CreateBST(T)的伪代码实现从控制台输入创建BST树。最后使用代码实现。使用“50 30 80 20 40 90 10 25 35 85 23 88”创建BST,并中序输出该BST

CreateBST(T)

伪代码:

 初始化树T为空树
    int i=0;
    while (i < n) {
        调用函数InsertBST
        i++
    }
    返回T

代码:

BiTNode *CreatBST(int a[], int n) {
    BiTNode *T = NULL;
    int i = 0;
    while (i < n) {
        InsertBST(T, a[i]);
        i++;
        }
    return T;
}

中序输出该BST

3. 编写DeleteBST(T, key)的伪代码实现从T中删除关键字key。如果无法编写出来,请写出在BST中删除关键字key所需注意的事项。

DeleteBST(T, key)

伪代码:

   if(T为空)返回0
    else {
        if(k<T->data)返回DeleteBST(T->lchild,key)
        else if(k>T->data)返回DeleteBST(T->rchild,key)
        else {
            调用函数Delete(T)
            返回1
        }
    }

4. 选做:使用代码实现DeleteBST(T, key)

DeleteBST(T, key)

代码:

int DeleteBST(BiTNode *&T, char key) {
    if (T == NULL)
       return 0;
    else {
        if (key < T->data)
       return DeleteBST(T->lchild, key);
        else if (key > T->data)
       return DeleteBST(T->rchild, key);
        else {
            Delete(T);
            return 1;
        }
    }
}
posted @ 2020-04-19 16:30  Vancciiii  阅读(142)  评论(0编辑  收藏  举报