二叉排序樹

2021-04-02 23:28:02 字數 999 閱讀 3631

二叉排序樹的 搜尋、插入、刪除節點的c語言描述的演算法。

main()中用了一組測試資料

#include "stdio.h"

#include "stdlib.h"

#define max 6

typedef struct node

node,*nodep;

;int  deletebst(nodep *r,int key);

int searchbst(nodep r,int key,nodep *f,  nodep *p) ;

int insertbst(nodep *r,int key);

void midorder(nodep r);

void main()

;int i;

nodep r=null;

for(i=0;ilchild) ;

printf("%d ",p->data) ;

midorder(p->rchild) ;

}int searchbst(nodep r,int key,nodep *f,nodep *p)

else

else if(r->data rchild,key,f,p) ;

}else}}

int  insertbst(nodep *r,int key)

else if(p->data>key)

else

}return 1;

}int deletebst(nodep *r,int key)

free(q) ;

}else if(!p->lchild)

free(q) ;

}else

p->data=q->data;

if(s==p)

s->lchild=q->lchild;

else

s->rchild=q->lchild;

free(q);

}return 1;

}return 0;

}

二叉排序樹

在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態連結串列,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是連結串列儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身...

二叉排序樹

一 二叉排序樹 二叉查詢樹 binary search tree 或者是一棵空樹,或者是具有下列性質的二叉樹 1.若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2.若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 3.它的左 右子樹也分別為二叉排序樹。1.二叉樹的儲存結構...

二叉排序樹

二叉排序樹的查詢 插入和刪除操作 include using namespace std typedef int status define ok 1 define error 0 define true 1 define false 0 typedef struct bitnode bitnode...

二叉排序樹

二叉排序樹又名二叉查詢樹,其定義如下 二叉樹的定義如下 定義二叉查詢樹的節點 templatestruct treenode 二叉排序樹的查詢演算法如下 在二叉樹head中查詢關鍵字為key的元素,若存在返回true,p指向該節點 若不存在返回false,p指向該插入到的節點 template bo...

二叉排序樹

二叉排序樹 binary sort tree 又稱二叉查詢樹。它或者是一棵空樹 或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 3 左 右子樹也分別為二叉排序樹 如果有兩個相等的元素,可根據情況 ...