一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹:對於任一結點,
所謂二叉搜尋樹的「映象」,即將所有結點的左右子樹對換位置後所得到的樹。
給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。
輸入的第一行給出正整數 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 using namespace std;
struct node
;void buildbst(struct node* &root,int data)
else if(root->data > data)
buildbst(root->left,data);
else
buildbst(root->right,data);
}void mirror(struct node* &root)
}vectorpre;
void preorder(struct node* root)
}vectorpost;
void postorder(struct node* root)
}int main()
preorder(root);
int i;
bool flag = false;
for(i = 0; i < n; i++)
if(pre[i] != v[i])
break;
if(i == n)
flag = true;
else
if(flag) }
else
printf("no\n");
return 0;
}
L2 004 這是二叉搜尋樹嗎? (25 分)
l2 004 這是二叉搜尋樹嗎?25 分 一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對一棵二叉搜尋樹或其映象進行前序遍歷的結果。輸入的第一行給出正整數 n 1...
L2 004 這是二叉搜尋樹嗎? (25 分)
一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,其左子樹中所有結點的鍵值小於該結點的鍵值 其右子樹中所有結點的鍵值大於等於該結點的鍵值 其左右子樹都是二叉搜尋樹。所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對...
L2 004 這是二叉搜尋樹嗎? 25分
一棵二叉搜尋樹可被遞迴地定義為具有下列性質的二叉樹 對於任一結點,其左子樹中所有結點的鍵值小於該結點的鍵值 其右子樹中所有結點的鍵值大於等於該結點的鍵值 其左右子樹都是二叉搜尋樹。所謂二叉搜尋樹的 映象 即將所有結點的左右子樹對換位置後所得到的樹。給定乙個整數鍵值序列,現請你編寫程式,判斷這是否是對...