二叉排序樹是一棵特殊的二叉樹,它是一棵二叉樹但同時滿足如下條件:對於樹上任意乙個結點,其上的數值必須大於等於其左子樹上任意結點的數值,必須小於等於其右子樹上任意結點的數值
由於各個數字插入的順序不同,所得到的二叉排序樹的形態也很可能不同,所以不同的插入順序對二叉排序樹的形態有重要的影響。但是,所有的二叉排序樹都有乙個共同的特點:若對二叉排序樹進行中序遍歷,那麼其遍歷結果必然是乙個遞增序列,這也是二叉排序樹名字的由來,通過建立二叉排序樹就能
#include
#include
struct node//二叉樹結構體
tree[110];//靜態陣列
int loc;//靜態陣列中被使用的元素個數
node *creat()//申請未使用的結點
void postorder(node *t)//後序遍歷
if(t->rchild!=null)
printf("%d ",t->c);
}void inorder(node *t)//中序遍歷
printf("%d ",t->c);
if(t->rchild!=null) }
void preorder(node *t)//前序遍歷
if(t->rchild!=null) }
node *insert(node *t,int x)//插入數字
else if(x
c)//若x小於根節點的數值
t->lchild=insert(t->lchild,x);//插入到左子樹上
else if(x>t->c)//若x大於根節點的數值
t->rchild=insert(t->rchild,x);//插入到右子樹上
return t;//返回根結點指標
}int main()
{ int n;
while(scanf("%d",&n)!=eof)
{ loc=0;
node *t=null;//二叉排序樹根結點為空
for(int i=0;i
九度OJ 1201 二叉排序樹
輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。輸入第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序 中序和後序遍歷。每種遍歷結果輸出一行。每行最後乙個資料之後有乙個空格。5 1 6...
題目1201 二叉排序樹 九度
題目描述 輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。輸入 輸入第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。輸出 可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序 中序和後序遍歷。每種遍歷結果輸出一行。每行最後乙個資料之後...
九度OJ 1467 二叉排序樹
題目1467 二叉排序樹 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 2525 解決 1039 題目描述 二叉排序樹,也稱為二叉查詢樹。可以是一顆空樹,也可以是一顆具有如下特性的非空二叉樹 1.若左子樹非空,則左子樹上所有節點關鍵字值均不大於根節點的關鍵字值 2.若右子樹非空,則右...