#include
using namespace std;
template
struct binarysearchtreenode
};template
class binarysearchtree
binarysearchtree( binarysearchtree& bstree)
bsnode*& operator=( binarysearchtree bstree)
~binarysearchtree() //類似於二叉樹後序遍歷的方式
}public:
bool insert(const k& key ) //三種情況:無_root, key已經存在, key不存在
else
else
if (cur->_key > key)
else
return
false;
}if (parent
->_key > key)
else
return
true;}}
bool find(const k& key)
bsnode* cur = _root;
bsnode*
parent
=null;
while (cur)
else
if (cur->_key > key)
else
return
true;
}return
false;
}bool remove(const k& key)
//三種情況:一:dst節點左右節點都為空,
//二:dst節點左節點為空:其父節點指向dst節點的右節點 或者右節點為空,其父節點指向dst節點的左節點(第一種情況包含於第二種情況)
//若刪除的節點其左右子節點都不為null 則採用交換替代思想:dst節點與左樹最大節點交換或者右樹最小節點交換。
else
else
if (cur->_key > key)
else
else
return
true;
}else
}else
if (cur->_right ==
null) //右為null 此處包含左右都為null的節點
二叉樹 非遞迴實現
include include include include define elemtype char using namespace std typedef struct bitnodebitnode,bitree int createbitree bitree t return1 void p...
二叉搜尋樹(遞迴 非遞迴)
完整源 在此 1 二叉搜尋樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹。若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有的節點的值都大於根節點的值 它的左右子樹也分為二叉搜尋樹 此二叉樹的中序遍歷結果為 0,1,2,3...
二叉樹 遞迴 非遞迴
include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...