給乙個序列,判斷該序列是否是二叉搜尋樹的後序遍歷結果。
功能測試:序列對應一顆二叉樹,序列對應一顆只含左孩子(右孩子)的二叉樹,序列只含乙個根節點。
特殊值測試:空指標
#include#include#include#includeusing namespace std;
bool doesbinarysearchtree(int* vec,int length)
{ if(vec==nullptr||length<=0)
return false;
int last=length-1;
int leftlength=0;
int rightlength=0;
int i;
for(i=0;ivec[last])
break;
leftlength=i;
for(;i0)
left=doesbinarysearchtree(vec,leftlength);
bool right=true;
if(i注意二叉搜尋樹後序遍歷的特點,陣列最後乙個元素是根節點,陣列的前面部分可以分為兩部分,第一部分是根節點左孩子的值,都要比根節點小,第二部分是根節點右孩子的值,都要比根節點大。利用這個特點,對第一部分,第二部分可以遞迴處理。
判斷陣列是否某二叉搜尋樹的後序遍歷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。public class solution public static boolean verifysquenceofbst int sequence,int s...
判斷陣列是否某二叉搜尋樹的後序遍歷
解題思路 由於是後序遍歷結果,也就是陣列最後乙個元素是根節點root,按照二叉搜尋樹的定義,陣列前面的元素中前半部分比root小,後半部分比root大,我們通過遍歷陣列跟root比較,如果比root大,記錄這個位置i,從這個i到直到最後的元素跟root比較,如果還有比root小的元素,說明不符,返回...
二叉樹 判斷整數序列是否為二叉搜尋樹的後序序列
題目 判斷整數序列是不是二叉搜尋樹的後序遍歷 思路 後序遍歷根在最後 1.從開頭和根依次比較,劃分左右子樹 2.右子樹一但有 根的,false 3.遞迴判斷左右子樹 4.返回左右子樹的bool值想與 bool isposorder int arr,int len 右子樹一旦有小於root的值就是fa...