判斷某陣列是不是某二叉搜尋樹的後序遍歷的結果

2021-09-24 01:23:29 字數 536 閱讀 1650

最近在整理之前做過的演算法題,有疑問或者有更好的解題思路可以和我聯絡。

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

public class solution 

//如果陣列是某二叉搜尋樹的後序遍歷的結果,那麼root是該樹的根節點

//那麼該陣列的左邊應該是左子樹的後序的遍歷,都小於根節點的值

//,右邊是右子樹的的後序的遍歷,都大於根節點的值

private boolean myfun(int sequence, int start, int root)

//左子樹的各節點都小於根節點

for(int j=start;jsequence[root])

} //遞迴判斷陣列是否為左右子樹的後序遍歷

return (myfun(sequence, start, i-1)&&myfun(sequence, i, root-1));

}}

判斷陣列是否某二叉搜尋樹的後序遍歷

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。public class solution public static boolean verifysquenceofbst int sequence,int s...

判斷陣列是否某二叉搜尋樹的後序遍歷

解題思路 由於是後序遍歷結果,也就是陣列最後乙個元素是根節點root,按照二叉搜尋樹的定義,陣列前面的元素中前半部分比root小,後半部分比root大,我們通過遍歷陣列跟root比較,如果比root大,記錄這個位置i,從這個i到直到最後的元素跟root比較,如果還有比root小的元素,說明不符,返回...

判斷二叉樹是不是平衡

題目 輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。例如下圖 中的二叉樹就是一棵平衡二叉樹 上面的 固然簡潔,但我們也要注意到由於乙個節點會被重複遍歷多次,這種思路的時間效率不高。例如在函式 isbalance 中輸入...