18 圖解劍指Offer 二叉樹的鏡像 Java題解

18 圖解劍指Offer 二叉樹的鏡像 Java題解

題目鏈接

題目描述

操作給定的二叉樹,將其變換爲源二叉樹的鏡像。
在這裏插入圖片描述

題解:

1.當二叉樹根節點爲null,或沒有葉子節點的時候直接return;
2. 創建一個temp臨時節點,二叉樹左右節點交換。
3.如果root.left != null root.left = Mirror(root.left)
4.如果root.right!= null root.right= Mirror(root.right)
5.樹的問題一般可以用子樹遞歸的思想解決

圖解:

在這裏插入圖片描述

代碼:

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public void Mirror(TreeNode root) {
        //當前節點爲空,直接返回
        if(root == null)
            return;
        //當前節點沒有葉子節點,直接返回
        if(root.left == null && root.right == null)
            return;
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        //遞歸交換葉子節點
        if(root.left != null)
            Mirror(root.left);
        if(root.right != null)
            Mirror(root.right);
    }
}

複雜度

空間複雜度: 空間複雜度爲O(1)
最壞時間複雜度: 遞歸時間複雜度O( logn)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章