SDUT ACM 2482 二叉排序樹

2022-02-13 12:07:51 字數 1276 閱讀 2526

二叉排序樹的定義是:或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。 今天我們要判斷兩序列是否為同一二叉排序樹

開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。

接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉排序樹。

接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉排序樹。(資料保證不會有空樹)

2

123456789

987654321

432156789

0

no

no

1 #include2 #include3 #include45

//**********變數定義與函式宣告**********

6int cnt; //

用來生成先序遍歷的字串

7struct

node8;

12void build(struct node **p, char k); //

把k插入二叉排序樹

13void preorder(struct node *p, char *s); //

先序遍歷

14void trans(char *s); //

把二叉排序樹的先序遍歷轉化成字串

15void del(struct node *p); //

釋放記憶體

16//

**********變數定義與函式宣告**********

1718

intmain()

1930}31

return0;

32}3334

void build(struct node **p, char

k)35

42else

if((*p)->data >k)

43 build(&(*p)->left, k);

44else build(&(*p)->right, k);45}

4647

void preorder(struct node *p, char *s)

4854

55void del(struct node *p)

5662

63void trans(char *s)

64

2482 二叉排序樹

time limit 1000ms memory limit 65536k 二叉排序樹的定義是 或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉排序樹。今...

2482二叉排序樹

time limit 1000ms memory limit 65536k 有疑問?點這裡 二叉排序樹的定義是 或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別...

2482 二叉排序樹

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 二叉排序樹的定義是 或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的...