a)函式的宣告和結構體的定義
#include
#include
usingnamespace
std;
structbstsearch;
voiderror(string
msg);
voidinsertnode(bstsearch
*&t,
string
key);
bstsearch*findnode(bstsearch
*t,string
key);
voidshownode(bstsearch
*t);
voidremovenode(bstsearch
*&root,bstsearch
*t,string
key);
bstsearch*findright(bstsearch
*t);
bstsearch*findleft(bstsearch
*t);
bstsearchb)主函式(主要是檢驗一下函式的正確性)*&findpointer(bstsearch
*&t,
string
key);
intc)二叉搜尋樹插入乙個node的實現(遞迴)main()
//加&是由於插入過程會修改二叉搜尋樹的指標的內容
voidinsertnode(bstsearch
*&t,
string
key)
else
else
}
}
}d)二叉搜尋樹查詢
//輸入乙個二叉搜尋樹和key,然後返回乙個指標
bstsearch*findnode(bstsearch
*t,string
key)
if(t->name
==key)
if(t->name
<
key)
else
}e)二叉搜尋樹的遍歷(中序遍歷)
voidf)二叉搜尋樹的移除(這個感覺麻煩一點)shownode(bstsearch
*t)
voidremovenode(bstsearch
*&root,
bstsearch
*t,string
key)
else
if(t->name
==key)
else
if(t->right
!=null)
else
}
else
if(t->name
<
key)
else
}g)返回乙個節點最左邊的孩子節點
bstsearch*findleft(bstsearch
*t)
return
t;
}
}h)返回乙個節點最右邊的孩子節點
bstsearch*findright(bstsearch
*t)
return
t;
}
}i)返回key的節點
bstsearch*&findpointer(bstsearch
*&t,
string
key)
else
if(t->name
==key)
return
t;
else
if(t->name
<
key)
return
findpointer(t->right,
key);
else
return
findpointer(t->left,
key);
}j)報錯函式
voiderror(string
msg)
二叉搜尋樹的插入,查詢,刪除
include using namespace std template class node 預設析構函式 templatenode node template node node t value template class bstree 預設析構 void buildbstree 建立二叉樹 ...
二叉搜尋樹的查詢 插入 刪除
coding utf 8 time 2020 9 23 15 56 author julyli file bst.py class bitreenode def init self,data self.data data self.lchild none self.rchild none self....
二叉搜尋樹的插入 刪除 查詢
1 若左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2 若右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 3 左 右子樹也分別為二叉排序樹 4 沒有鍵值相等的節點 插入的資料之後要滿足二叉樹的性質1和2,所以要先找到插入位置,且插入的位置一定是在葉子節點的下面 所以插入分兩個步驟 ...