劍指 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
分析
鏡像二叉樹,需要遞歸地將每個節點的左右子節點都反轉。
可以注意到,如果反轉了某個節點,比如下面這個樹的第二層節點:
4
/ \
2 7
/ \ / \
1 3 6 9
翻轉後變成:
4
/ \
7 2
/ \ / \
6 9 1 3
只需要遞歸地反轉第二層節點的子節點即可。
代碼
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode mirrorTree(TreeNode root) {
dfs(root);
return root;
}
public void dfs(TreeNode node){
if(node == null) return;
//交換左右節點
TreeNode tmp = node.left;
node.left = node.right;
node.right = tmp;
if(node.left != null) dfs(node.left);
if(node.right != null) dfs(node.right);
}
}