PTA L2 004 這是二叉搜尋樹嗎

2021-09-04 10:58:07 字數 1514 閱讀 9008

一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹:對於任一結點,

所謂二叉搜尋樹的「映象」,即將所有結點的左右子樹對換位置後所得到的樹。

給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。

輸入的第一行給出正整數 n(≤1000)。隨後一行給出 n 個整數鍵值,其間以空格分隔。

如果輸入序列是對一棵二叉搜尋樹或其映象進行前序遍歷的結果,則首先在一行中輸出yes,然後在下一行輸出該樹後序遍歷的結果。數字間有 1 個空格,一行的首尾不得有多餘空格。若答案是否,則輸出no

7

8 6 5 7 10 8 11

yes

5 7 6 8 11 10 8

7

8 10 11 8 6 7 5

yes

11 8 10 7 5 6 8

7

8 6 8 5 10 9 11

no
考查對二叉搜尋樹的基本理解 

#include#include#include#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f

using namespace std;

static const int max_n = 1e5 + 5;

typedef long long ll;

struct bst;

queueq1; //記錄先序遍歷節點

queueq2; //記錄後序遍歷節點

void preorder(bst *t)

void laterorder(bst *t)

void insert(bst * &t, int weight)

else

else }}

void swap(bst * &t)

int main()

preorder(root);

bool flag = true;

for (int i = 0; i < n; i++)

} while (!q1.empty()) q1.pop();

if (flag)

printf("%d\n", q2.front());

q2.pop();

} else

} while (!q1.empty()) q1.pop();

if (flag)

printf("%d\n", q2.front());

q2.pop();

} else printf("no\n");

} return 0;

}

PTA L2 004 這是二叉搜尋樹嗎?

一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。輸入的第一行給出正整數 n 1000 隨後一行給出 n 個整數鍵值,其間...

pta l2 4(這是二叉搜尋樹嗎?)

題意 給定n以及n個整數,問該序列是否為二叉搜尋樹的前序遍歷或者二叉搜尋樹映象的前序遍歷,若是,則輸出yes,並輸出其後序遍歷,否則輸出no。思路 先判斷是否為二叉搜尋樹的前序遍歷,令is false,通過遞迴和二叉搜尋樹的性質計算其後序遍歷序列,若序列長度等於n,即成立,否則令is true,再次...

PAT L2 004 這是二叉搜尋樹嗎?

題目 一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。輸入格式 輸入的第一行給出正整數n 1000 隨後一行給出n個整數...