1. 题目
2. 思路
(1) 递归
- 取出结点的左右子树,递归得到左右子树的镜像,然后交换左右子树即可。
(2) 栈
3. 代码
import java.util.Deque;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode left = root.left;
TreeNode right = root.right;
root.left = mirrorTree(right);
root.right = mirrorTree(left);
return root;
}
}
class Solution1 {
public TreeNode mirrorTree(TreeNode root) {
if (root == null) {
return null;
}
Deque<TreeNode> stack = new LinkedList<>();
stack.push(root);
TreeNode cur;
TreeNode temp;
while (!stack.isEmpty()) {
cur = stack.pop();
if (cur.left != null) {
stack.push(cur.left);
}
if (cur.right != null) {
stack.push(cur.right);
}
temp = cur.left;
cur.left = cur.right;
cur.right = temp;
}
return root;
}
}