時間限制:1 秒
記憶體限制:32 兆
特殊判題:否
提交:3260
解決:1385
題目描述:輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。
輸入:輸入第一行包括乙個整數n(1<=n<=100)。
接下來的一行包括n個整數。
輸出:可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序、中序和後序遍歷。
每種遍歷結果輸出一行。每行最後乙個資料之後有乙個空格。
樣例輸入:
51 6 5 9 8
樣例輸出:
1 6 5 9 81 5 6 8 9
5 8 9 6 1
輸入中可能有重複元素,但是輸出的二叉樹遍歷序列中重複元素不用輸出。
2023年華中科技大學計算機保研機試真題
下面是cpp的**,參考朋友的。盡量改成c
#include#include#include
using
namespace
std;
struct
node
;void insert(int x,node *&p)
else
if(p->key>x)
insert(x,p->lc);
else
if(p->keyinsert(x,p->rc);
else
if(p->key==x)return;}
node* create(int
n)
returnf;}
void pre_order(node *p)
}void in_order(node *p)
}void post_order(node *p)
}void free(node *p)
}int
main()
return0;
}
下面是c語言的
#include#includestruct
node
;void insert(int x,node *&p)
else
if(p->key>x)
insert(x,p->lc);
else
if(p->keyinsert(x,p->rc);
else
if(p->key==x)return;}
node* create(int n,node *&f)
returnf;}
void pre_order(node *p)
}void in_order(node *p)
}void post_order(node *p)
}void free(node *p)
}int
main()
return0;
}
很奇怪的一點,在dev c++上c編譯通過,但是oj上卻是編譯錯誤。
考慮到c++相容c,所以講上述**用c++編譯,ac。
好吧,不明覺厲。
下面是自己寫的c**,除了引用,其他都是c
1 #include 2 #include 3 typedef structbtnode
4btnode;
10void preorder(btnode *p)
1119}20
void inorder(btnode *p)
2128}29
void postorder(btnode *p)
3037}38
39void myinsert(int num,btnode *&p)
4049
else
if((p->data)50 myinsert(num,p->rchild);
51else
if((p->data)>num)
52 myinsert(num,p->lchild);53}
54void create(btnode *&p,int
n)55
6566}67
void myfree(btnode *p)
6875}76
77int main(void)78
9596
return0;
97 }
題目1201 二叉排序樹
題目描述 輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。輸入 輸入第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。輸出 可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序 中序和後序遍歷。每種遍歷結果輸出一行。每行最後乙個資料之後...
題目1201 二叉排序樹
題目描述 輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。輸入 輸入第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。輸出 可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序 中序和後序遍歷。每種遍歷結果輸出一行。每行最後乙個資料之後...
題目1201 二叉排序樹 九度
題目描述 輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷。輸入 輸入第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數。輸出 可能有多組測試資料,對於每組資料,將題目所給資料建立乙個二叉排序樹,並對二叉排序樹進行前序 中序和後序遍歷。每種遍歷結果輸出一行。每行最後乙個資料之後...