二叉搜尋樹

2021-10-01 08:08:05 字數 1417 閱讀 3413

二叉樹搜尋樹具有較高的搜尋效率,並能支援插入和刪除運算

性質:1.若左子樹不空,則左子樹上所有節點的關鍵字值均小於根節點的關鍵字值

2. 若右子樹不空,則右子樹上所有節點的關鍵字值均大於根節點的關鍵字值

3. 左右子樹也分別是二叉搜尋樹

/**

* 二叉搜尋樹*/

#include using namespace std;

class treenode;

class bstree

//獲取二叉搜尋樹的根節點

treenode* searchtree(int x);

bool deletetree(int x); //刪除元素x

void preorder(); //先序遍歷二叉樹

void preorder(treenode*);

void inorder(); //中序遍歷二叉樹

void inorder(treenode*);

void backorder(); //後序遍歷二叉樹

void backorder(treenode*);};

bstree::bstree(int x)

bstree::~bstree()

void bstree::clear(treenode *r)}

bool bstree::inserttree(int x)

else if(x>p->element)

else

else if(p->element>q->element)

else

void bstree::preorder(treenode *r)}

void bstree::inorder()

void bstree::inorder(treenode *r)}

void bstree::backorder()

void bstree::backorder(treenode *r)}

treenode* bstree::searchtree(int x)

else

}cout<<"我們沒有找到"if(p->lchild&&p->rchild) //p節點有兩個非空子樹

p->element=s->element;

p=s;

q=r;

}if(!p)

return false;

if(p->lchild)

else

if(p==root)

root=c;

else if(p==q->lchild)

else

delete p;

return true;}

int main()

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 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...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...