天梯賽 這是二叉搜尋樹嗎?

2021-10-20 22:35:13 字數 2324 閱讀 9511

l2-004 這是二叉搜尋樹嗎? (25 分)

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

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

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

輸入的第一行給出正整數 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 cla(a, sum) memset(a, sum, sizeof(a))

#define rap(i, m, n) for(int i=m; i<=n; i++)

#define rep(i, m, n) for(int i=m; i>=n; i--)

#define bug printf("???\n")

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

typedef pairp;

typedef pairpl;

const int inf = 0x3f3f3f3f;

const double eps = 1e-8;

const int mod=998244353;

const int maxn = 1e3+5;

const int n=1e5;

template void read(t &x)

while (isdigit(ch))

x *= f;

}int n,a[maxn];

struct node;

int flag=0;//標記,判斷是否滿足二叉搜尋樹或其映象

node *buildmin(int *p,int q)

for(int j=i;j<=q;j++)

node * buildmax(int *p,int q)

} u->l =buildmax(p+1,i-2);

u->r =buildmax(p+i-1,q-i+1);

return u;

}void print(node *u,int tm)

int main()

//先判斷是否滿足二叉搜尋樹

node *temp;

temp=buildmin(a,n);

if(flag==0)

//再判斷是否滿足映象

node *tmp;flag=0;

tmp=buildmax(a,n);

if(flag==0)

else printf("no");

return 0;

}

天梯賽 L2 004 這是二叉搜尋樹嗎?

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者陳越 一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是...

天梯賽 L2 004 這是二叉搜尋樹嗎?

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是...

天梯賽 L2 004 這是二叉搜尋樹嗎 題解

一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,其左子樹中所有結點的鍵值小於該結點的鍵值 其右子樹中所有結點的鍵值大於等於該結點的鍵值 其左右子樹都是二叉搜尋樹。所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對...