//二叉搜尋樹.
#include
using namespace std;
template
type>
class
bstnode
};templatetype>
class
bsttree
return in;
}bsttree
():vef(-1),root(null){}
bsttree
(const
bsttree
&bst)
bsttree& operator=(const
bsttree
&bst)
return *this;
}~bsttree
()
bool insert
(type
a,int
n)
}void printf
()
bool find
(int
val)
bool remove
(type
val)
bool delete
(type
val)
type
parent
(type
val)
type
getval
(bstnode
*t)
private:
bstnode
*parent
(bstnode
*&t,type
val)//找val的父親節點.
}bool remove
(bstnode
*&t,type
val)//這裡刪除是搜尋乙個值代替刪除位置的值.
else
else if(t->right==null)
else
}} }}
bstnode
* find
(bstnode
*&t,type
val)//按值val查詢節點.
}bool _destory(bstnode
*&t)//摧毀搜尋二叉樹.
}bool copy(bstnode
*&t,bstnode
*e)//賦值搜尋二叉樹.
return true;
}bool insert
(bstnode
*&t,type
val)//插入val。
else
return true;
}void printf
(bstnode
*t)//排序列印.
}public:
type
min()//求最小值.
type
max()//求最大值.
private:
type vef;
bstnode
*root;
};int main()
感悟:我本來想將remove
()函式的實現用要刪除節點的左分支掛在右邊分支的最左端,也可以形成二叉搜尋樹,只是找尋父節點鏈結十分麻煩,且增加了二叉樹深度,所以我放棄了那個想法,選擇了資料刪除的方法.
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...
二叉搜尋樹c 二叉搜尋樹的遍歷
可以總結出三條性質 1 非空左子樹的所有鍵值小於根節點的鍵值。2 非空右子樹的所有鍵值大於根節點的鍵值。3 左右子樹都是二叉搜尋樹。他的遍歷有三種形式 先序遍歷 中序遍歷 後序遍歷。1 先序遍歷 根節點 左子樹 右子樹 首先訪問根節點,然後遍歷左子樹,最後右子樹。並且自遍歷左右子樹時,仍然先訪問根節...
C 二叉搜尋樹
二叉搜尋樹又稱為 二叉排序樹,其也可以是乙個空樹,或者具有以下性質的樹也可以被稱為二叉搜尋樹 1.若左子樹不為空,對於任意節點,比其左子樹中任意節點都大。2.若右子樹不為空,對於任意節點,比其右子樹中任意節點都小。3.最左側的節點一定是最小的,最右側的節點一定是最大的。4.當對二叉搜尋樹進行中序遍歷...