下面進入正題:
對於二叉搜尋樹,我們規定任一結點的左子樹僅包含嚴格小於該結點的鍵值,而其右子樹包含大於或等於該結點的鍵值。如果我們交換每個節點的左子樹和右子樹,得到的樹叫做映象二叉搜尋樹。
現在我們給出乙個整數鍵值序列,請編寫程式判斷該序列是否為某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,如果是,則輸出對應二叉樹的後序遍歷序列。
輸入格式:
輸入的第一行包含乙個正整數n(≤1000),第二行包含n個整數,為給出的整數鍵值序列,數字間以空格分隔。
輸出格式:
輸出的第一行首先給出判斷結果,如果輸入的序列是某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,則輸出yes,否側輸出no。如果判斷結果是yes,下一行輸出對應二叉樹的後序遍歷序列。數字間以空格分隔,但行尾不能有多餘的空格。
輸入樣例1:
78 6 5 7 10 8 11
輸出樣例1:
yes5 7 6 8 11 10 8
輸入樣例2:
78 6 8 5 10 9 11
輸出樣例2:
no求出二叉樹的前序和後序遍歷,不難發現映象二叉樹的先序遍歷等於二叉樹後序遍歷的reverse,後序為二叉樹先序遍歷的reverse
在這裡插入**片
#include
#include
#include
#include
using
namespace std;
vector<
int> a,b,c,d;
typedef
struct node *tree;
struct node
;tree newnode()
void
insert
(tree &t,
int tmp)
else
if(tmp>=t-
>weight)
else
}void
preorder
(tree t)
bool flag =
true
;void
lastorder
(tree t)
intmain()
preorder
(head)
;lastorder
(head);if
(a==b)
}else
}else
}}
PTA 資料結構與演算法 堆疊
1.棧底元素是不能刪除的元素。1分 tf 2.對順序棧進行進棧 出棧操作不涉及元素的前 後移動問題。1分 tf 3.若用data 1 m 表示順序棧的儲存空間,則對棧的進棧 出棧操作最多只能進行m次。1分 tf 4.通過對堆疊s操作 push s,1 push s,2 pop s push s,3 ...
PTA 資料結構與演算法 佇列
1.在用陣列表示的迴圈佇列中,front值一定小於等於rear值。1分 tf 2.迴圈佇列執行出隊操作時會引起大量元素的移動。1分 tf 3.棧是插入和刪除只能在一端進行的線性表 佇列是插入在一端進行,刪除在另一端進行的線性表。1分 tf 4.n個元素進隊的順序和出隊的順序總是一致的。1分 tf 1...
PTA 資料結構與演算法 回溯
1.在4皇后問題中,x1,x2,x3,x4 對應4個皇后位置的列下標。在回溯剪枝過程中,狀態 1,4,2,會在 2,4,1,之前被檢查,並且它們對應的分支都沒有解。tf 2.西洋棋四皇后問題僅有 2 個不同的解。tf 1.給定收費公路重建問題的距離集d 首先可以確定的是 x1 0 和 x6 8。下列...