輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。ac:100%
思路:
陣列最後乙個數就是二叉樹的根節點。剩下的數可以分為三種情況:
1、全小於最後乙個數:根節點的左子樹
2、全大於最後乙個數:根節點的右子樹
3、前面一部分小於根節點,後一部分大於根節點
其他情況都不符合二叉搜尋樹後續遍歷的情況
package 牛客;
public class a23二叉搜尋樹的後序遍歷序列
return judge(sequence, 0, sequence.length - 1);
}//判斷
public static boolean judge(int array, int start, int end) else
if(flag == 1)
}return judge(array,start,end - 1);//遞迴判斷子樹
} else else
} else }}
return judge(array, start, index) && judge(array, index + 1, end - 1);}}
return true; }
//測試
public static void main(string args) ;
system.out.println(verifysquenceofbst(array)); }
}/*題目描述
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。
*/
23 二叉搜尋樹的後序遍歷序列
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。class solution 思路 已知條件 後序序列最後乙個值為root 二叉搜尋樹左子樹值都比root小,右子樹值都比root大。1 確定root ...
23 二叉搜尋樹的後序遍歷序列
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。總結 一 遞迴方式 好理解 1 熟悉後序遍歷原理,後序遍歷陣列最後乙個元素為根節點root 2 判斷找出左 右子樹集合的分界下標,然後分別遞迴判斷 3 ...
23 二叉搜尋樹的後序遍歷
二叉搜尋樹有其規律,中序遍歷是乙個遞增陣列,因此後續遍歷也有了規律,那就是左子樹一定比根節點小,右子樹一定比根節點大,而後續遍歷最後乙個結點必定是根節點。後續遍歷是左 右 根的順序遍歷,所以按照規則來說,在後續遍歷陣列中,從第乙個大於根節點的數開始,剩下的數都應該大於根結點。如果違背這個規律說明這個...