非遞迴實現搜尋二叉樹

2021-07-23 22:20:04 字數 2612 閱讀 3768

#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 建立二叉...