#include
using
namespace std;
typedef
class
trees
*btree,btree;
typedef
class
node
*qnode,qnode;
typedef
class
stack
//建立乙個鏈棧,用來遍歷
*linkstack,link;
void
push_stack
(linkstack &l,btree t)
;//進棧操作
void
init_stack
(linkstack &l)
;//初始化棧
btree pop_stack
(linkstack &l)
;//出棧操作
void
insert_tree
(qnode &l,
int e)
;//建立二叉搜尋樹 以及插入
bool
empty_stack
(linkstack l)
;//判斷棧是否為空
void
mid_printlist
(qnode l)
;//中序遍歷
inttree_height
(btree &l)
;//求樹的高度
intmax_tree
(btree l)
;//求樹的最大值
btree tree_right_min
(btree l)
;//得到右邊最小節點的指標
void
delete_tree
(btree &l,
int x)
;//刪除為x的節點
void
kh_printlist
(btree )
;int
main()
; qnode l=
new qnode;
l->node=
null
;for
(int i=
0;i<=
8;i++
)mid_printlist
(l);
/*int height=tree_height(l->node);
cout<<"這棵樹的高度是"cout<<"節點最大值是"cout<<
"你想刪除的節點的值是"
cin>>del;
delete_tree
(l->node,del)
;mid_printlist
(l);
return0;
}void
init_stack
(linkstack &l)
//初始化棧
void
push_stack
(linkstack &l,btree t)
//進棧操作
bool
empty_stack
(linkstack l)
//判斷棧是否為空
else
} btree pop_stack
(linkstack &l)
//出棧操作
else
}void
insert_tree
(qnode &l,
int e)
//建立二叉搜尋樹 以及插入
else
else
}else
else}}
}}void
mid_printlist
(qnode l)
//中序遍歷if(
!empty_stack
(stack))}
}int
tree_height
(btree &l)
else
else}}
intmax_tree
(btree l)
else
if(maxsreturn maxs;}}
void
kh_printlist
(btree tree)
//括號輸出二叉樹
else
cout<<
")";}}
} btree tree_right_min
(btree l)
//得到右邊最小節點的指標
else
if(l-
>right!=
null
)return p;}}
void
delete_tree
(btree &l,
int x)
//刪除為x的節點
else
if(x>data)
else
if(x>l-
>data)
else
if(l-
>left!=
null
&&l-
>right!=
null
)else
else
if(l-
>right==
null
)delete t;
}}
二叉搜尋樹的建立 查詢 插入 刪除
二叉查詢樹最常見的操作是查詢樹中的某個關鍵字,處了普通的search之外,其還能支援minimum maximun successor predecessor等查詢,對於高度為h的樹,它們都可以在o h 時間內完成。給定指向樹根的指標和關鍵字k,要在樹中查詢該關鍵字是否存在,如果存在,返回其指標,否...
B 樹的插入 刪除操作
include include define maxm 10 b 樹最大階數 typedef int keytype keytype是關鍵字型別 typedef struct node btnode typedef struct b 樹的查詢結果型別 result int m m階b 樹作為全域性變...
B樹插入刪除操作
b 樹定義 一種平衡的多路查詢樹。用於 索引組織檔案,減少訪問外存次數,節約搜尋時間。一棵m階b 樹或為空樹,或滿足下列特性 為盡量簡單,把考試不考的內容全部略去 1 樹中每個結點至多有m個分支,最少有 m 2 分支,取上整,除根結點外 2.關鍵字數大於等於m 2 1,小於等於m 1,2取上整 3 ...