劍指offer 33 二叉樹映象

2021-09-11 15:52:25 字數 868 閱讀 5585

操作給定的二叉樹,將其變換為源二叉樹的映象。 二叉樹的映象定義:源二叉樹

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...