【LeetCode笔记】剑指 Offer 36. 二叉搜索树与双向链表(Java、二叉树、链表、原地算法)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode笔记】剑指 Offer 36. 二叉搜索树与双向链表(Java、二叉树、链表、原地算法)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 題目描述
- 思路 && 代碼
- 1. 非原地算法
- 2. 原地算法
- 二刷
題目描述
- 談到二叉搜索樹,那就得考慮考慮中序遍歷啦~
- 這道題對中序遍歷的理解提升很有好處!
思路 && 代碼
1. 非原地算法
- 最簡單的做法,依賴ArrayList,但是不滿足原地算法的要求
- 只要通過中序遍歷,把樹上結(jié)點存儲到ArrayList中,再通過下標(biāo)進(jìn)行操作即可。
2. 原地算法
- 和1異曲同工,但是相對更加巧妙!
- Node first:存儲最左邊的**“首位”**結(jié)點,用于最后的處理
- Node pre:在遞歸中輔助使用,遞歸結(jié)束后指向**“末尾”**結(jié)點
- 同樣是中序遍歷,要注意好 cur 、pre 的處理
- cur 是局部變量;pre、first 是全局變量
二刷
- 中序遍歷 + 全局變量
總結(jié)
以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 36. 二叉搜索树与双向链表(Java、二叉树、链表、原地算法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初中数学503个必考知识点_2020年中
- 下一篇: 【LeetCode笔记】84. 柱状图中