二叉搜尋樹:就是每乙個結點的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 建立二叉樹 ...