題目描述
判斷兩序列是否為同一二叉搜尋樹序列
輸入開始乙個數n,(1<=n<=20) 表示有n個需要判斷,n= 0 的時候輸入結束。
接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。
接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。
輸出如果序列相同則輸出yes,否則輸出no
樣例輸入 copy
645021
12045
54120
45021
45012
21054
50412
0樣例輸出 copy
nono
yesno
nono
#include
#include
using
namespace std;
int flag;
struct node
;struct node *
creat
(int n,
struct node *root)
else
return root;};
void
compare
(struct node *root1,
struct node *root2)
else
}elseif(
(root1==
null
&&root2!=
null)||
(root1!=
null
&&root2==
null))
}int
main()
for(i=
0; i)compare
(root1,root2);if
(flag==1)
printf
("yes\n");
else
printf
("no\n");
}}return0;
}
一開始這樣寫的怎麼也沒找出來錯誤,後來發現,乙個小地方忽略了。。。
#include
#include
using
namespace std;
int flag;
struct node
;struct node *
creat
(int n,
struct node *root)
else
return root;};
void
compare
(struct node *root1,
struct node *root2)
else
}elseif(
(root1==
null
&&root2!=
null)||
(root1!=
null
&&root2==
null))
}int
main()
for(i=
0; i)compare
(root1,root2);if
(flag==1)
printf
("yes\n");
else
printf
("no\n");
}}return0;
}
二叉搜尋樹 平衡二叉樹 B樹 B 樹 B 樹
二叉查詢樹,由於不平衡,如果連續插入的資料是有順序的 會導致如下圖b的所示,此時搜尋會退化到o n 二叉查詢樹,也稱二叉搜尋樹,或二叉排序樹。其定義也比較簡單,要麼是一顆空樹,要麼就是具有如下性質的二叉樹 1 若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若任意節點的右子樹...
二叉搜尋樹,B樹(B 樹),B 樹,B 樹
b樹即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進入...
演算法筆記 問題 B 二叉搜尋樹
題目描述 判斷兩序列是否為同一二叉搜尋樹序列 輸入開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩...