力扣刷題 劍指 Offer 27 二叉樹的映象

2021-10-25 07:59:51 字數 1213 閱讀 4491

請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。

例如輸入:

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