二叉搜尋樹的後續遍歷序列 之字形列印二叉樹

2021-10-01 23:12:50 字數 1230 閱讀 5784

解題思路:

這道題第一次沒有思路,有了思路之後很簡單

就是,後序遍歷最後乙個元素就是根節點,然後重新遍歷整個序列

這個序列,一旦遇到了大於跟結點的數字,那麼就不可能再遇到小於根節點的數字了,一旦遇到了,就說明這個序列不是合格的二叉搜尋樹的後續遍歷序列

class

solution

}for

(i; i < size;

++i)

}return

true;}

};

第二題

解題思路:

按照之前的,將二維陣列層序遍歷,然後將每一層放在乙個陣列中,最後將乙個二維陣列傳出來的思路是一樣的,只需要最後加一步,將後拿到的二維陣列,每隔一行進行逆序,就行了。

/*

struct treenode

};*/

class

solution

if(p-

>right)

que.

pop();

vec2.

push_back

(p->val)

; count--

;//每齣乙個元素,上一層進入的元素就減減,等到了0,就說明,上一層進入元素都出去了

} count = size;

//讓本層個數在下次迴圈中,變成上一層。資料交換

size =0;

vec1.

push_back

(vec2);}

for(

int i =

1; i < vec1.

size()

; i +=2

)//每隔一樣進行逆序的**

return vec1;}}

;

比較重要的就是,雙層while迴圈

外層迴圈結束條件是,隊列為空

內層迴圈結束條件是,上一次迴圈進入棧的元素,都遍歷完(遍歷完就意味著,將他的左右子樹已經儲存在來佇列中,而自己也已經被壓入一維陣列)

二叉搜尋樹的後續遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果,假設輸入的陣列的任意兩個數字都互不相同 author q.yuan public class judgepostorder leftend 判斷左子樹的值是否都小於根節點的值 for int i low i leftend i 判斷右子樹...

二叉搜尋樹的後續遍歷序列

題目 輸入乙個整數陣列 判斷該陣列是不是某二叉搜尋樹的後續遍歷結果 如果是則返回true 否咋返回false 假設輸入數字的任意兩個數字都互不相同 後序遍歷是左 右 根 左 根 右 陣列最後乙個值t為根結點的值 陣列中小於t的為樹的左孩子 之後的應當為右孩子 且所有的右孩子大於根t 若存在不大於t的...

二叉搜尋樹的後續遍歷序列

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷結果。如果是則返回true,否則返回false。思路 在後序遍歷得到的序列中,最後乙個數字是輸的根節點的值。陣列前面的數字可以分為兩部分 第一部分是左子樹節點的值,它們都比根節點的值小 第二部分是右子樹節點的值,它們都比根節點的值大。如此...