这道题很简单,写了十多分钟就写出来了,一看题目就知道这道题肯定要用递归。先交换左孩子和右孩子,再用递归交换左孩子的左孩子和右孩子,交换右孩子的左孩子和右孩子,其中做一下空判断就行。以下是我的代码:
class Solution {public TreeNode mirrorTree(TreeNode root) {if(root == null){return root;}else{return recur(root);}}public TreeNode recur(TreeNode root){TreeNode temp = new TreeNode();if(root.left != null && root.right !=null){temp = root.right;root.right = root.left;root.left = temp;}else if(root.left == null && root.right != null){root.left = root.right;root.right = null;}else if(root.left != null && root.right == null){root.right = root.left;root.left = null;}if(root.left != null) recur(root.left);if(root.right != null) recur(root.right);return root;}
}
看了一下题解大多数用的递归,还有用辅助栈的。