樹 二叉排序樹(中序有序化)

2021-08-19 15:01:37 字數 1397 閱讀 5084

注:中序遍歷二叉排序樹即可得到有序序列;時間複雜度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

122

1 20

sample output

2

1 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 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過...