二叉查詢樹

2021-10-22 09:49:21 字數 2008 閱讀 5448

二叉查詢樹性質

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 ...