操作給定的二叉樹,將其變換為源二叉樹的映象。 二叉樹的映象定義:源二叉樹
8
/ \
6 10
/ \ / \
5 7 9 11
映象二叉樹
8/ \
10 6
/ \ / \
11 9 7 5
複製**
首先先理解題意,映象通過以下幾個步驟可以實現:
可以看到首先對根節點的左右進行翻轉。 再遞迴的對左子樹,以及右子樹進行翻轉。 之前講過,鍊錶的題目分為四個步驟:連過來、指標走、斷後路、調狀態。 二涉及到樹的題目,基本都是遞迴。 一旦涉及到遞迴,就要搞清楚兩個東西:
遞迴的過程。在這裡就是,先翻轉根節點,再翻轉左子樹,再翻轉右子樹。
遞迴結束的條件。 這裡就是當樹為null的時候不翻轉。
public class solution
}複製**
同時一般,我們會有一些邊界case去檢查一下**的魯棒性。 比如左右有乙個是null
8
/ \
10 null
/ \null null
複製**
**執行到交換沒啥問題:
8
/ \
null 10
/ \
null null
複製**
執行到遞迴,左子樹就結束掉了。 右子樹的話還要遞迴的執行左右子樹,也可以執行正確,但是其實沒必要。
public class solution
}複製**
劍指offer 33 之字形列印二叉樹
請實現乙個函式按照之字形順序從上向下列印二叉樹。即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。樣例輸入如下圖所示二叉樹 8,12,2,null,null,6,4,null,null,null,null 8 12 2 6 4 輸出 8 2...
《劍指offer》 33 二叉樹的後序遍歷序列
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。思路 public class solution public boolean verify int sequence,int start,int end 前面選...
劍指offer 二叉樹映象
操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 這道題目就是交換樹的左右節點之後,遞迴呼叫。不遞迴的方法我覺得可以考慮使用層次遍歷那樣的佇列式方法,不過太麻煩了吧。coding utf 8 class...