問題 B 二叉搜尋樹

2021-10-02 18:43:21 字數 1773 閱讀 5872

題目描述

判斷兩序列是否為同一二叉搜尋樹序列

輸入開始乙個數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個序列,每個序列格式跟第乙個序列一樣,請判斷這兩...