二叉查找树的查找和插入

2017-09-17  本文已影响0人  沧州宁少

常用的查找算法

倒排索引

二叉排序树,又称为二叉查找数,它或者是一棵空树,或者是具有下列性质的二叉树。

二叉查找树的插入

typedef struct BiTNode{

int data;
struct BiTNode*lchild,*rchild;
}BiTNode,*BiTree;  

typedef bool Status; // 1.T为二叉链表 2.key为要查找的关键字 3.f指向T的双亲。当T为根节点的时候,f的初值是NULL 4.p 为查找成功后可以查找节点的位置 Status searchBST(BiTree T, int key,BiTree f,BiTree*p){

if (!T) {   //如果查找不成功
    *p = f;
    return false;
}else if (key == T->data){
    *p = T;
    return true;
}else if (key< T->data){
    return  searchBST(T->lchild, key, T, p);
}else if (key> T->data){
    return  searchBST(T->rchild, key, T, p);
}
return  true;}

//二叉树的插入操作 1. 先去查找有没有 2.没有的话,则先创建一个节点,分别为节点赋值。然后判断插入节点和当前节点的关系。 Status insertBST(BiTree *T,int key){

// f为T的双亲节点。p为当前节点
BiTree s ,p ;
if (!searchBST(*T, key, NULL, &p)) { 
    s = (BiTree)malloc(sizeof(BiTNode));
    s->data = key;
    s->lchild = s->rchild = NULL;
    if (!p) {
        *T  =s ;
    }else if (key<p->data){
        p->lchild = s;
    }else if (key>p->data){
        p->rchild = s;
        
    }
    return  true;
}
return  false;}
上一篇 下一篇

猜你喜欢

热点阅读