二叉查詢樹(二叉排序樹)建立,插入,刪除操作。

2021-09-07 10:58:26 字數 1747 閱讀 7719

尋找節點就是直接依據數值的大小。從root節點開始遍歷,大於當前遍歷節點就向它的右子樹查詢,相反則查詢它的左子樹。

然後返回。

直接依據root節點,遍歷到最右就是最大節點,遍歷到最左,就是最小節點。

插入節點我這裡插入的節點都會成為葉子節點。依據大小的關係向下遍歷,遍歷到最後的節點,然後插入就能夠了。

這裡刪除節點是相對麻煩一點的。在刪除的節點是乙個葉子節點的時候。或者僅僅有乙個孩子的時候,那麼直接把當前節點刪除讓孩子取代自己的位置就能夠了,在被刪除的節點左右孩子都存在的時候,要刪除當前節點,就須要用自己右子樹的最小節點來取代被刪除的節點。

**例如以下

//

// main.cpp

// bstree

//// created by alps on 14-7-31.

//#include #define elementtype int

using namespace std;

struct node;

typedef node* ptrtonode;

typedef ptrtonode treenode;

treenode makeempty(treenode t);

int isempty(treenode t);

treenode findtree(elementtype x,treenode t);

treenode findmin(treenode t);

treenode findmax(treenode t);

treenode inserttree(elementtype x, treenode t);

treenode deletetree(elementtype x, treenode t);

struct node;

treenode makeempty(treenode t)

return null;

}int isempty(treenode t)

treenode findtree(elementtype x,treenode t)

if (x < t->element) else if(x > t->element)else

}treenode findmin(treenode t)

if (t->left == null) else

// return null;

}treenode findmax(treenode t)

if (t->right == null) else

// return null;

}treenode inserttree(elementtype x, treenode t)else if(x > t->element)else if(x < t->element)

return t;

}treenode deletetree(elementtype x, treenode t)

if (x > t->element) else if(x < t->element)elseelseelse

if (t->right == null)

free(tmp);}}

return t;

}void preordertree(treenode t)

}int main(int argc, const char * ar**)

二叉排序樹 二叉搜尋樹 二叉查詢樹

特點 結構體定義struct node 建樹 建二叉排序樹 void create node root,int t else if t root data create root lc,t else create root rc,t 前序遍歷 層序 字典序 int flag int pre 1001...

二叉排序樹(二叉查詢樹 二叉搜尋樹)

include include typedef struct node node node createnode int value void addnode node root,int value else else void middleorder node node middleoder no...

Codeup二叉查詢樹 二叉排序樹

輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。輸入第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序 中序和後序遍歷。每種遍歷結果輸出一行。每行最後乙個資料之後有乙個空格。12 2 ...