二叉排序树

1 定义
  二叉排序树,又称为二叉查找树。它或者是一颗空树,或者是具有下列性质的二叉树。
  (1)若它的左子树不为空,则左子树上所有结点的值都小于它的根结点的值;
  (2)若它的右子树不为空,则右子树上所有结点的值都大于它的根结点的值;
  (3)它的左、右子树也分别为二叉排序树。

2 二叉排序树查找操作

//二叉树的二叉链表结点结构定义
typedef struct BiTNode {
    int data;
    struct BiTNode *lchild;
    struct BiTNode *rchild;
}BiTNode;
typedef struct BiTNode *BiTree;

//递归查找二叉树中是否存在key
//指针f指向key的双亲,初始值为NULL
//若查找成功,则指针p指向该数据元素结点,并返回true
//若查找失败,则指针p指向查找路径上指向的最后一个结点,并返回false
Status SearchBST(BiTree T, int key, BiTree f, BiTree *p) {
    if (!T) {                        //查找不成功
        *p = f;
        return false;
    } else if (key == T->data) {    //查找成功
        *p = f;
        return true;
    } else if (key < T->data) {
        SearchBST(T->lchild, key, f, p);    //在左子树继续查找
    } else {
        SearchBST(T->rchild, key, f, p);    //在右子树继续查找
    }
}

 

posted @ 2016-07-28 20:16  紫洁  阅读(466)  评论(0编辑  收藏  举报