二叉搜尋樹的插入 刪除 查詢 顯示

2021-08-19 19:40:32 字數 2680 閱讀 3587

1)二叉搜尋樹的基本操作實現

a)函式的宣告和結構體的定義

#include

#include

using

namespace

std;

struct

bstsearch;

void

error(string

msg);

void

insertnode(bstsearch

*&t,

string

key);

bstsearch

*findnode(bstsearch

*t,string

key);

void

shownode(bstsearch

*t);

void

removenode(bstsearch

*&root,bstsearch

*t,string

key);

bstsearch

*findright(bstsearch

*t);

bstsearch

*findleft(bstsearch

*t);

bstsearch

*&findpointer(bstsearch

*&t,

string

key);

b)主函式(主要是檢驗一下函式的正確性)

int

main()

c)二叉搜尋樹插入乙個node的實現(遞迴)

//加&是由於插入過程會修改二叉搜尋樹的指標的內容
void

insertnode(bstsearch

*&t,

string

key)

else

else

}
}
}
d)二叉搜尋樹查詢

//輸入乙個二叉搜尋樹和key,然後返回乙個指標
bstsearch

*findnode(bstsearch

*t,string

key)

if(t->name

==key)

if(t->name

<

key)

else

}
e)二叉搜尋樹的遍歷(中序遍歷)

void

shownode(bstsearch

*t)

f)二叉搜尋樹的移除(這個感覺麻煩一點)

void

removenode(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)報錯函式

void

error(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,所以要先找到插入位置,且插入的位置一定是在葉子節點的下面 所以插入分兩個步驟 ...