二叉搜尋樹的插入 刪除

2021-09-29 18:51:07 字數 2325 閱讀 6782

二叉搜尋樹:就是每乙個結點的data值,都大於它的所有左孩子的data,小於所有右孩子的data

二叉搜尋樹的插入刪除的模擬:

#pragma once

namespace ljc

template

<

class

t>

friend

class

binarysorttree;}

;template

<

class

t>

class

binarysorttree

bool

insert

(const t & val)

treenode

* cur = m_root;

treenode

* pre =

nullptr

;while

(cur)

else

if(val > cur-

>m_data)

else

} cur =

new treenode

(val);if

(val < pre-

>m_data)

else

return

true;}

bool

erase

(const t &val)

treenode

* cur = m_root;

treenode

* pre =

nullptr

;while

(cur)

else

if(val > cur-

>m_data)

else}if

(cur ==

nullptr)if

(cur-

>m_left && cur-

>m_right)

delete cur2;

}else

if(cur-

>m_left)

else}}

;}

這個裡面的刪除是按照值來刪除的,下面的**按照指標來刪除

#pragma once

namespace wf

template

<

class

t>

friend

class

binarysorttree;}

;template

<

class

t>

class

binarysorttree

bool

insert

(const t &val)

treenode

* cur = m_root;

treenode

* pre =

nullptr

;while

(cur)

else

if(val > cur-

>m_data)

else

} cur =

new treenode

(val);if

(val < pre-

>m_data)

else

return

true;}

bool

erase

(const t &val)

treenode

* cur = m_root;

treenode

* pre =

nullptr

;while

(cur)

else

if(val > cur-

>m_data)

else}if

(cur ==

nullptr)if

(cur-

>m_left && cur-

>m_right)

cur2-

>m_right = cur-

>m_right;

if(cur-

>m_data < pre-

>m_data)

else

delete cur;

}else

if(cur-

>m_left)

else

delete cur;

}else

else

delete cur;}}

};};

搜尋二叉樹 插入 刪除)

1.1搜尋二叉樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有一下性質的樹 1.2二叉搜尋樹操作 1.二叉搜尋樹的查詢 若根節點不為空 否則,返回false node find const k key else if cur kv.first kv.first else return...

二叉搜尋樹的搜尋 插入 後繼 刪除

二叉搜尋樹 二叉搜尋樹是以二叉樹是形式表示的,這樣就可以使用乙個二叉鍊錶來表示二叉搜尋樹了。對於任何結點x,其左子樹的關鍵字的值不大於x.key,右子樹的關鍵字不小於x.key。二叉搜尋樹支援insert delete search maximum minimum predecessor 前驅結點 ...

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

include using namespace std template class node 預設析構函式 templatenode node template node node t value template class bstree 預設析構 void buildbstree 建立二叉樹 ...