演算法筆記 問題 B 二叉搜尋樹

2021-10-17 08:28:02 字數 940 閱讀 8078

題目描述

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

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

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

接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。

輸出如果序列相同則輸出yes,否則輸出no

樣例輸入 copy

6

45021

12045

54120

45021

45012

21054

50412

0

樣例輸出 copy

no

noyes

nono

no

#include using namespace std;

struct node;

/*插入*/

void insert(node* &root, int data)

if(data == root->data) return;/*關鍵!!這裡預設二叉排序樹不允許有重複鍵值*/

if(datadata) insert(root->lchild, data);

else insert(root->rchild, data);

}/*先序*/

void preorder(node* root, vector&vi)

int main()

preorder(newroot, pre);

if(pre == origin)

printf("yes\n");

else

printf("no\n");}}

return 0;

}

問題 B 二叉搜尋樹

題目描述 判斷兩序列是否為同一二叉搜尋樹序列 輸入開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩...

《演算法筆記》9 4小節 問題 B 二叉搜尋樹

這道題也當做二叉搜尋樹的建樹模板。這道題其實直接把這顆樹建出來後,比較前序序列和中序序列即可,這裡我用的陣列實現,更好寫和查錯qwq。code include using namespace std int n len string a b c char tree 400040 pd 400040 ...

二叉搜尋樹 平衡二叉樹 B樹 B 樹 B 樹

二叉查詢樹,由於不平衡,如果連續插入的資料是有順序的 會導致如下圖b的所示,此時搜尋會退化到o n 二叉查詢樹,也稱二叉搜尋樹,或二叉排序樹。其定義也比較簡單,要麼是一顆空樹,要麼就是具有如下性質的二叉樹 1 若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若任意節點的右子樹...