二叉搜尋樹後序遍歷序列判斷

2021-07-13 17:39:48 字數 720 閱讀 1638

問題:輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。

解析:1)所謂二叉搜尋樹,是指空樹,或其左子樹的元素都小於根元素,右子樹的元素都大於根元素,且其左子樹和右

子樹都是二叉搜尋樹。

2)二叉搜尋樹後序遍歷序列有如下特徵:a、最後乙個元素是根元素;b、左側元素可以分為left、right兩部分陣列,分別是根元素的左孩子和右孩子。

解題思路:

宣告兩個陣列,存放根元素的左子樹和

右子樹,在存放過程中,若出現錯誤情況,可直接返回false,若分組成功,則分別對根元素的左子樹和

右子樹進行遞迴。具體**如下所示:

bool verifysquenceofbst(vectorsequence) 

else

left.push_back(*it);

for(;it!=sequence.end();it++)

if(*it>midval)

right.push_back(*it);

else

return false;

if(right.empty())

right.push_back(1);

return(verifysquenceofbst(left)&&verifysquenceofbst(right));

}

判斷二叉搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。分析 採用遞迴的思想,先找出根節點,左子樹元素都必須比根節點小,右子樹節點都比根節點大,否則返回false.得到子樹 子串行 的兩種方法 用下標把陣列 邏輯分為幾...

二叉搜尋樹的後序遍歷判斷

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。之前對於二叉搜尋樹,只知道中序遍歷是遞增的,今天做到這道題目,要求判斷陣列是不是二叉搜尋樹後序遍歷的結果,一開始有點懵,後來在紙上畫畫,感覺很像遞迴的感覺,有一種...

二叉搜尋樹的後序遍歷序列

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是返回true,否則返回false。假設輸入的陣列的任意兩個數字都不相同。解答 二叉搜尋樹後序遍歷最後訪問的是根節點,根據根節點將陣列分成兩部分,前面一部分即左子樹值小於根節點值,後面一部分即右子樹的值大於根節點 再遞迴的檢查...