劍指offer 24 二叉搜尋樹的後序遍歷序列

2021-10-01 22:26:48 字數 572 閱讀 5947

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

思路:

既然是二叉搜尋樹,那麼排好序的陣列就是這棵樹的中序遍歷序列

使用中序遍歷序列和後序遍歷序列即可構造這棵樹

如果構造失敗,那這個序列就不是某一顆二叉搜尋樹的後序遍歷序列

啟發或者坑:

構造樹的過程中,遞迴構造,明確遞迴函式的遞迴集格外重要

**

class solution 

sort(mids.begin(), mids.end());

return modifyistree(0, sequence.size()-1, 0, sequence.size()-1);

}bool modifyistree(int m1, int m2, int p1, int p2)

int root_value = posts[p2];

for (int i = m1; i <= m2; i++)

}return false;

}};

劍指offer 24 二叉搜尋樹的後序遍歷序列

二叉搜尋樹的性質是 元素的左子樹上的元素全部小於該元素,右子樹上的元素全部大於該元素。後序遍歷根節點總是在最後,所以根據後序遍歷順序可以得到根元素,並且得到根元素的左子樹和右子樹。假設樹的後序遍歷順序為 3,7,4,6,5 可以判斷出 5是根節點,3為根節點的左子樹,7,4,6是根節點的右子樹,但是...

劍指Offer 24 二叉搜尋樹的後續遍歷序列

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 後序遍歷為lrv。因此陣列最後一位為根節點。陣列前半段為其左子樹,後半段為其右子樹,再每層遞迴時,我們找到左右子樹的分割點,分別判斷左右子樹是否小於 ...

劍指offer24 二叉樹的後序遍歷

思想 輸入乙個陣列,該陣列最後乙個元素即二叉樹的根節點,剩下的是左子樹和右子樹,左子樹比根節點小,右子樹比根節點大,循壞遍歷左右子樹 public class verifysequerceofbst if cut 0 verifysequenceofbst arrays.copyofrange ar...