二叉樹 27題 二叉樹的映象

2021-10-13 13:05:01 字數 1642 閱讀 3549

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

例如輸入:

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
根據二叉樹映象的定義,考慮遞迴遍歷(dfs)二叉樹,交換每個節點的左 / 右子節點,即可生成二叉樹的映象。

演算法流程:

終止條件:當節點root為空時(即越過葉子節點),則返回null;

遞推工作:

初始化節點tmp,用於暫存root的左子節點;

開啟遞迴右子節點mirrortree(root.right),並將返回值作為root的左子節點。

開啟遞迴左子節點mirrortree(tmp),並將返回值作為root的右子節點。

複雜度分析:利用棧(或佇列)遍歷樹的所有節點node,並交換每個node的左 / 右子節點。

演算法流程:

特例處理:當root為空時,直接返回null;

迴圈交換:當棧stack為空時跳出;

出棧:記為node;

新增子節點:將node左和右子節點入棧;

交換:交換node的左 / 右子節點。

返回值:返回根節點root。

複雜度分析:

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 限制 解法 通過畫圖讓自己有乙個清楚的思路,然後使用遞迴的方法進行翻轉。題目比較簡單...

27 二叉樹的映象

請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。例如輸入 4 27 13 69映象輸出 4 72 96 31示例 1 輸入 root 4,2,7,1,3,6,9 輸出 4,7,2,9,6,3,1 限制 0 節點個數 1000注意 本題與主站 226 題相同 總結上面的過程,我們可以得出求一棵樹映...

二叉樹12 二叉樹的映象

題目 操作給定的二叉樹,將其變換為源二叉樹的映象。輸入描述 思路 首先要理解業務邏輯,何為映象?所謂映象就是對於任何乙個結點,將其左右子樹進行交換即可。對於一棵以root為根結點的二叉樹,要將其映象,首先將其左右子樹 root.left為根的子樹 和 root.right為根的子樹 進行映象,然後將...