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)