二叉排序樹的 搜尋、插入、刪除節點的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 左 右子樹也分別為二叉排序樹 如果有兩個相等的元素,可根據情況 ...