請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。
例如輸入:
4/ \
2 7
/ \ / \
1 3 6 9
映象輸出:
4/ \
7 2
/ \ / \
9 6 3 1
示例 1:
輸入:root =
[4,2,7,1,3,6,9]
輸出:[4,7,2,9,6,3,1]
這道題目需遍歷完二叉樹,每遍歷到乙個節點就交換它的左右節點,當遍歷完成以後就實現了整個二叉樹的翻轉;對於二叉樹的遍歷可以使用深度優先搜尋(比如遞迴、棧的方式實現)、廣度優先搜尋(佇列的方法);三種方法的思路如下所示:
1.結束條件
2.需要實現的操作(交換結點的左右子樹)
3.遍歷步驟
遞迴返回條件:當前結點為 null,或者左右子節點都為null
實現操作:交換根結點的左右子樹
遞迴注重巨集觀上的思想(大致套路就是先寫遞迴結束條件,接著寫要實現的操作,如何遞迴的下一層,等待其回溯回來,進行最後一步
**:
class
solution
};
棧是一種後進先出的容器,利用其思想可實現與遞迴類似的**,即深度優先搜尋;從頭結點開始,將其壓入棧中,然後出棧,此時就是在遍歷的過程中,故執行我們要進行的實現操作(交換該節點的左右子節點),最後將該節點的左右子節點都壓入棧中,結束條件就是當棧為空的時候,即二叉樹遍歷完成。
棧模擬結束條件:棧為空時
實現操作:交換根結點的左右子樹
**:
class
solution
return root;}}
;
佇列是一種先進先出的容器,利用其思想可實現廣度優先搜尋,即二叉樹一層一層的遍歷;從頭結點開始,將其壓入佇列中,然後將隊頭出隊,此時就是在遍歷的過程中,故執行我們要進行的實現操作(交換該節點的左右子節點),最後將該節點的左右子節點都壓入隊尾中,結束條件就是當隊列為空的時候,即二叉樹遍歷完成。
佇列模擬結束條件:隊列為空時
實現操作:交換根結點的左右子樹
**:
class
solution
return root;}}
;
力扣 劍指 Offer 27 二叉樹的映象 簡單
請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。例如輸入 4 2 7 1 3 6 9 映象輸出 4 7 2 9 6 3 1 示例 1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 1.遞迴法,自下而上 遞推解析 a.當節點root為空,則返回null b.遞迴,r...
力扣題解 劍指 Offer 27 二叉樹的映象
請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。例如輸入 4 2 7 1 3 6 9 映象輸出 4 7 2 9 6 3 1 示例 1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 限制 0 節點個數 1000 題解 二叉樹映象定義 對於二叉樹中任意節點 root ...
簡單題 劍指 Offer 27 二叉樹的映象
力扣刷題 請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。示例 1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 限制 0 節點個數 1000 解題思路 通過遞迴以及結構賦值 definition for a binary tree node.function t...