?? 進(jìn)階練習(xí)
226. 翻轉(zhuǎn)二叉樹(迭代法(用棧、隊(duì)列)右遭、遞歸)
590. N 叉樹的后序遍歷(前序遍歷的逆過程做盅,但有些細(xì)節(jié)需要注意)
101. 對(duì)稱二叉樹(迭代法、遞歸)
222. 完全二叉樹的節(jié)點(diǎn)個(gè)數(shù)(二分查找 + 位運(yùn)算窘哈、廣度優(yōu)先遍歷吹榴、迭代)
257. 二叉樹的所有路徑(含回溯)
106. 從中序與后序遍歷序列構(gòu)造二叉樹(熟悉掌握中序遍歷和后序遍歷)
?? 具體實(shí)例分析
1)問題描述
2)分析
2滚婉、589. N 叉樹的前序遍歷
1)問題描述
2)問題分析
?記住前序遍歷是 中左右腊尚,而在迭代過程中,一輪循環(huán)的結(jié)果是“上一層棧元素出椔模”以及“該層元素進(jìn)棧”劝篷,結(jié)合前序遍歷的性質(zhì)哨鸭,所以在循環(huán)中讓n叉樹的孩子節(jié)點(diǎn)從右往左進(jìn)棧,這樣在下一輪循環(huán)的出棧中就能保證從左往右的出來的娇妓。
3像鸡、101. 對(duì)稱二叉樹
1)問題描述
2)分析
用棧依次存儲(chǔ)左右節(jié)點(diǎn)(從兩邊像中間存儲(chǔ)),然后每次出隊(duì)兩個(gè)節(jié)點(diǎn)進(jìn)行比較
?思考:為什么當(dāng)左右兩邊都是NULL的時(shí)候,是continue而不是return true;
4只估、572. 另一棵樹的子樹
1)問題描述
2)分析
?方法一(深度優(yōu)先暴力匹配算法)
5志群、110. 平衡二叉樹
1)問題分析
2)分析(參考)
1)問題分析
2)分析(參考)
遞歸中隱藏著回溯蛔钙。
3)代碼實(shí)現(xiàn)
3.1)深度優(yōu)先遍歷方法
3.2)廣度優(yōu)先遍歷方法
我們維護(hù)一個(gè)隊(duì)列桑涎,存儲(chǔ)節(jié)點(diǎn)以及根到該節(jié)點(diǎn)的路徑。一開始這個(gè)隊(duì)列里只有根節(jié)點(diǎn)兼贡。在每一步迭代中攻冷,我們?nèi)〕鲫?duì)列中的首節(jié)點(diǎn),如果它是葉子節(jié)點(diǎn)遍希,則將它對(duì)應(yīng)的路徑加入到答案中等曼。如果它不是葉子節(jié)點(diǎn),則將它的所有孩子節(jié)點(diǎn)加入到隊(duì)列的末尾凿蒜。當(dāng)隊(duì)列為空時(shí)廣度優(yōu)先搜索結(jié)束禁谦,我們即能得到答案。
1)問題描述
2)分析
我們都知道后序遍歷的最后一個(gè)元素是根節(jié)點(diǎn)枷畏,在中序遍歷中,根節(jié)點(diǎn)則劃分左右兩棵子樹虱饿。
通過此思想拥诡,通過遞歸,更新后序后序遍歷的“根節(jié)點(diǎn)”氮发,通過中序遍歷來給這個(gè)“根節(jié)點(diǎn)”找它的左右子樹渴肉。
8、