判斷乙個資料序列是否是BST後序遍歷的結果

2021-06-18 06:42:42 字數 963 閱讀 3995

基本知識:

1)bst:二叉排序樹,即父節點大於左子節點,小於等於右子節點

2)後序遍歷: 先遍歷左子樹,再遍歷右子樹,最後遍歷根節點

基本思想:後續遍歷得到的陣列的最後乙個元素為根節點,前一部分為左子樹,後一部分為右子樹

前一部分中的元素都小於root(根),後一部分中的元素都大於root(根)

所以可以先遍歷前一部分,找到第乙個大於等於root的節點i,然後判斷此後的節點是否都大於root,如果不是就不是後序遍歷的結果,

如果是,則遞迴呼叫。

本文參考如下部落格:    部落格1

package test;

public class binarysortedtree

//遞迴呼叫左子樹

if(i > start)

lresult = isbst(array,start,i-1);

//遞迴呼叫右子樹

if(i < end)

rresult = isbst(array,i,end-1);

return (lresult&&rresult);

}public static void main(string args) ; //是後序遍歷的結果

int arraynotbst = ; //不是後序遍歷的結果

binarysortedtree bst = new binarysortedtree();

system.out.println("序列arraybst "+(bst.isbst(arraybst, 0, arraybst.length-1)==true?"是":"不是")+"後序遍歷的結果");

system.out.println("序列arraynotbst "+(bst.isbst(arraynotbst, 0, arraynotbst.length-1)==true?"是":"不是")+"後序遍歷的結果");

}}

判斷乙個數字是否是回文

最近碰到乙個題目,其中一步判斷數字是否為回文 由於題目要求是最短時間實現,不要考慮實現本身的效率 1如果直接去實現,就是比較數字的最高位值和最低位,然後再。public boolean isp int x if x temp bit bit為數值位數 int temp1,temp2 for int ...

判斷乙個數是否是質數

乙個數如果可以進行因數分解,那麼分解的兩個數一定是乙個小於等於sqrt n 乙個大於等於sqrt n 因此遍歷到sqrt n 即可。因為如果sqrt n 左側找不到因數,右側也一定找不到因數。中心思想 遍歷n是否能被2到sqrt n 之間的數整除,如果不能則為質數。import math defis...

判斷乙個數是否是素數

素數釋義 曾稱質數。乙個大於1的正整數,如果除了1和它本身以外,不能被其他正整數整除,就叫素數。如2,3,5,7,11,13,17 public boolean isprime int n for int i 2 i從2開始,一直到小於其自身,依次判斷能否被n整除即可,能夠整除則不是質數,否則是質數...