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

2021-09-11 07:28:03 字數 646 閱讀 8988

給乙個序列,判斷該序列是否是二叉搜尋樹的後序遍歷結果。

功能測試:序列對應一顆二叉樹,序列對應一顆只含左孩子(右孩子)的二叉樹,序列只含乙個根節點。

特殊值測試:空指標

#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...