C 二叉搜尋樹

2021-07-02 11:49:20 字數 1672 閱讀 2479

//二叉搜尋樹.

#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.當對二叉搜尋樹進行中序遍歷...