二叉查詢樹性質
template
<
class
t>
struct treenode ;}
;//二叉查詢樹
template
<
class
t>
class
findtree;~
findtree()
;public
:void
insert
(t value)
;void
delete
(treenode
* node)
; treenode
*find
(treenode
* node)
;private:}
;//插入
template
<
class
t>
void findtree
::insert
(t value)
if(push-
>val > temp-
>val)
else
temp = temp-
>right;
}else
if(push-
>val < temp-
>val)
else
temp = temp-
>left;}}
}}template
<
class
t>
void findtree
::delete
(treenode
* node)
else
}//如果存在刪除節點
if(renode !=
nullptr
)//要刪除的節點和左子樹最大節點交換
renode-
>val = node2-
>val;
if(parent-
>left == renode)
parent-
>left = node2;
else
if(parent-
>right == renode)
parent-
>right = node2;
delete node2;
node2 =
nullptr;}
else
if(renode-
>left ==
nullptr
)//只有右子樹 選擇第乙個右節點
if(parent-
>left == renode)
parent-
>left = renode-
>right;
else
parent-
>right = renode-
>right;
delete renode;
renode ==
nullptr;}
else
if(renode-
>right==
nullptr
)//只有左子樹 選擇第乙個左節點
if(parent-
>left == renode)
parent-
>left = renode-
>left;
else
parent-
>right = renode-
>left;
delete renode;
renode =
nullptr;}
}}template
<
class
t>
treenode
* findtree
::find
(treenode
* node)
else
}return
nullptr
;}
二叉樹 二叉查詢樹
構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...
二叉樹 二叉查詢樹
二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...
樹(樹,二叉樹,二叉查詢樹)
1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...