var verifyPostorder = function(postorder) {
// !本題的解題關鍵:二叉搜尋樹的後序周遊,最後一個元素是根節點
// 如果輸入的數組長度小于2,則傳回true
let len = postorder.length;
if (len < 2) return true;
// 區分左右子樹
let flag = 0;
// 找到根節點
let root = postorder[len-1];
for (let i = 0; i < postorder.length;i++) {
if (postorder[i] > postorder[len-1]) {
flag = i;
break;
}
if (i === len-1) {
flag = i;
}
}
// 左子樹
let leftTree = postorder.slice(0,flag);
// 右子樹
let rightTree = postorder.slice(flag,len-1);
// 如果右子樹的每一個節點都大于根節點,則繼續遞歸判斷,反之為false
if (rightTree.every((value) => value > root)) {
return verifyPostorder(leftTree) && verifyPostorder(rightTree);
} else {
return false;
}
};