注:中序遍歷二叉排序樹即可得到有序序列;時間複雜度o(logn)
查詢:(基本步驟)
1)若根節點的關鍵字等於查詢元素---查詢成功;
2)若根節點關鍵字小於查詢元素---遍歷右子樹;
3)若根節點關鍵字大於查詢元素---遍歷左子樹;
直到遍歷到根節點為空時查詢結束,無該元素查詢失敗。
time limit: 1000 ms
memory limit: 65536 kib
submit
statistic
discuss
problem description
在樹結構中,有一種特殊的二叉樹叫做排序二叉樹,直觀的理解就是——(1).每個節點中包含有乙個關鍵值 (2).任意乙個節點的左子樹(如果存在的話)的關鍵值小於該節點的關鍵值 (3).任意乙個節點的右子樹(如果存在的話)的關鍵值大於該節點的關鍵值。現給定一組資料,請你對這組資料按給定順序建立一棵排序二叉樹,並輸出其中序遍歷的結果。
input
輸入包含多組資料,每組資料格式如下。
第一行包含乙個整數n,為關鍵值的個數,關鍵值用整數表示。(n<=1000)
第二行包含n個整數,保證每個整數在int範圍之內。
output
為給定的資料建立排序二叉樹,並輸出其中序遍歷結果,每個輸出佔一行。
sample input
1221 20
sample output
21 20
#include#include#includetypedef struct nodenode;
int flag=0;
node * create(int n)
int data;
node * root=(node *)malloc(sizeof(node));//root
scanf("%d",&data);
root->data=data;
root->left=null;
root->right=null;
for(int i=1;idata=data;
p->left=null;
p->right=null;
node * q=root;
node * r=null;
while(q)
else
} if(flag)
else
flag=0;
} return root;
}void order(node * root)
else
order(root->right); }}
int main()
return 0;
}
c 二叉排序樹 中序遍歷
cpp 二叉排序樹 儘管二叉排序樹很簡單,但是第一次寫二叉排序樹的類,還是有一點的麻煩。不知道如何寫遞迴,如何寫成員函式等。第一次總是會很糾結的,所以發篇博文來紀念下自己寫的 第乙個c 類 by mr zys include include define maxn 10000 using names...
二叉排序樹的中序遍歷
problem description 在樹結構中,有一種特殊的二叉樹叫做排序二叉樹,直觀的理解就是 1 每個節點中包含有乙個關鍵值 2 任意乙個節點的左子樹 如果存在的話 的關鍵值小於該節點的關鍵值 3 任意乙個節點的右子樹 如果存在的話 的關鍵值大於該節點的關鍵值。現給定一組資料,請你對這組資料...
二叉排序樹
在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過...