題目:輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。
思路:所謂二叉搜尋數,就是對於所有的節點,節點左邊的子節點都小於該節點,節點右邊的子節點都大於該節點。已知二叉搜尋樹的後序遍歷,則陣列的最後乙個節點為根節點。遍歷陣列找到第乙個比根節點大的下標,則該下標往後應該都是右子樹,也就是說往後應該都比根節點大。根據這一點來對二叉樹進行拆分和遞迴,確保對於每乙個節點滿足上述要求即可。
public
class solution
}return
false;
}public boolean verifysquenceofbst(int sequence,int
from,int to)
}//檢查分界點右邊所有的節點是否滿足二叉搜尋樹的條件,然後遞迴。
return checkright(sequence,index,to-1,root)&&verifysquenceofbst(sequence,from,index-1)&&verifysquenceofbst(sequence,index,to-1);
}return
true;
}public boolean checkright(int array,int
from,int to,int root)
}return
true;
}}
二叉搜尋樹的後序遍歷
二叉搜尋樹的後序遍歷序列中,最後乙個值是根結點,前面比根節點小的是左結點,後面比根結點大的是右結點。include include bool verifysquenceofbst int sequence,int length int root sequence length 1 int i 0 在...
二叉搜尋樹的後序遍歷
描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷。如果是,則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。1 樣例輸入 5 7 6 9 11 10 8 1 樣例輸出 yes 2 樣例輸入 7 4 6 5 2 樣例輸出 no 首先要知道二叉搜尋樹的定義 或者是一棵空樹...
二叉搜尋樹的後序遍歷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路採用遞迴方法 include include includeusing namespace std bool core vectorsequence,int ...