【LeetCode笔记】剑指 Offer 33. 二叉树的后序遍历序列(Java、递归、栈)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】剑指 Offer 33. 二叉树的后序遍历序列(Java、递归、栈)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 題目描述
- 思路 && 代碼
- 1. 遞歸做法
- 2. 輔助棧做法
- 二刷
打卡第四天~昨天沒來得及寫博客= =
題目描述
- 無須多言,直接沖思路吧!
思路 && 代碼
1. 遞歸做法
- 缺點:最差情況下,可能會退化成鏈表,導(dǎo)致時間復(fù)雜度變成 O(n2n^2n2)
- 但是比較好理解!對于當(dāng)前序列,根據(jù)末尾元素值來找左子樹范圍 && 右子樹范圍,然后分別遞歸進行判斷即可~
2. 輔助棧做法
- 相對于上一個做法,這里把時間復(fù)雜度穩(wěn)定在O(nnn),同時做了空間復(fù)雜度O(n)的犧牲~
- 可以結(jié)合這個大佬的題解一起理解,有圖還是比較便于理解的
- 這個做法一開始可能有點難理解,可以多跟著畫幾次圖理一理
二刷
class Solution {public boolean verifyPostorder(int[] postorder) {return judge(postorder, 0, postorder.length - 1);}public boolean judge(int[] postorder, int left, int right) {if(left >= right) {return true;}int leftEnd = left;while(leftEnd < right && postorder[leftEnd] < postorder[right]) {leftEnd++;}int rightEnd = leftEnd;while(rightEnd < right && postorder[rightEnd] > postorder[right]) {rightEnd++;}return rightEnd == right && judge(postorder, left, leftEnd - 1) && judge(postorder, leftEnd, rightEnd - 1);} }- 輔助棧做法:先鴿著,以后有空寫。
總結(jié)
以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 33. 二叉树的后序遍历序列(Java、递归、栈)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python tkinter画笑脸_Py
- 下一篇: logminer java_使用Orac