判斷是否要從二叉樹的定義著手:
- 根節點大於所有左子樹上的節點,小於右子樹所有節點;
- 子樹遞迴滿足此條件
注:既然是搜尋樹,那麼認為無重複節點(無相同關鍵字)
function test(a, l, r)
{
if(l == r) return true;
let root = a[r];
let i = l;
while(a[i] < root) i++;
let mid = i;
while(i < r){
if(a[i] < root) return false;
i++;
}
let flag = true;
if(mid > l){
flag = flag && test(a, l, mid - 1);
}
if(mid <= r){
flag = flag && test(a, mid, r - 1);
}
return flag;
}
// let a = [5, 7, 6, 9, 11, 10, 8];
let a = [7, 4, 6, 5];
let valid_post_order_tree = test(a, 0, a.length - 1);
console.log(valid_post_order_tree);
本作品採用《CC 協議》,轉載必須註明作者和本文連結