7-28 搜尋樹判斷(25 分)
對於二叉搜尋樹,我們規定任一結點的左子樹僅包含嚴格小於該結點的鍵值,而其右子樹包含大於或等於該結點的鍵值。如果我們交換每個節點的左子樹和右子樹,得到的樹叫做映象二叉搜尋樹。
現在我們給出乙個整數鍵值序列,請編寫程式判斷該序列是否為某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,如果是,則輸出對應二叉樹的後序遍歷序列。
輸入的第一行包含乙個正整數n(≤1000),第二行包含n個整數,為給出的整數鍵值序列,數字間以空格分隔。
輸出的第一行首先給出判斷結果,如果輸入的序列是某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,則輸出yes
,否側輸出no
。如果判斷結果是yes
,下一行輸出對應二叉樹的後序遍歷序列。數字間以空格分隔,但行尾不能有多餘的空格。
7
8 6 5 7 10 8 11
yes
5 7 6 8 11 10 8
7
8 6 8 5 10 9 11
no
思路:判斷是否為先序佇列,我想的是每個數的後面的數可以分為兩段,一段是大於該數,另一段是小於該數,用異或實現該判斷,迴圈判斷到倒數第三個數,然後進行建樹,然後後序遍歷輸出。不是這麼簡單嘛?等等為什麼這次測試點只有1234阿拉伯數字了!明天還有課就不熬夜除錯了
參考了下別人家答案,然後我能說洗個腳就找到了
感覺題目也是表述有問題吧->如果輸入的序列是某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,輸出對應二叉樹的後序遍歷序列,這個對應是對應二叉搜尋樹呢還是映象的二叉搜尋樹?可能我語文不好7 28 搜尋樹判斷 25分
對於二叉搜尋樹,我們規定任一結點的左子樹僅包含嚴格小於該結點的鍵值,而其右子樹包含大於或等於該結點的鍵值。如果我們交換每個節點的左子樹和右子樹,得到的樹叫做映象二叉搜尋樹。現在我們給出乙個整數鍵值序列,請編寫程式判斷該序列是否為某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,如果是,則輸出對應二叉樹...
PAT 7 28 搜尋樹判斷 二叉搜尋樹
題目描述 對於二叉搜尋樹,我們規定任一結點的左子樹僅包含嚴格小於該結點的鍵值,而其右子樹包含大於或等於該結點的鍵值。如果我們交換每個節點的左子樹和右子樹,得到的樹叫做映象二叉搜尋樹。現在我們給出乙個整數鍵值序列,請編寫程式判斷該序列是否為某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,如果是,則輸出...
PTA資料結構與演算法 7 28 搜尋樹判斷
下面進入正題 對於二叉搜尋樹,我們規定任一結點的左子樹僅包含嚴格小於該結點的鍵值,而其右子樹包含大於或等於該結點的鍵值。如果我們交換每個節點的左子樹和右子樹,得到的樹叫做映象二叉搜尋樹。現在我們給出乙個整數鍵值序列,請編寫程式判斷該序列是否為某棵二叉搜尋樹或某映象二叉搜尋樹的前序遍歷序列,如果是,則...