这是一个典型的递归题目,首先看结束条件:如果root为空或者root为单个节点则直接返回该节点。
否则定义一个和root val相同的节点newroot;
将root节点的左孩子翻转后的结果给newroot右孩子;
将root节点的只右孩子翻转后的结果给newroot左孩子;
代码如下:
/**
* 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) {
if(root == null || (root.left == null && root.right == null))
return root;
TreeNode newroot = new TreeNode(root.val);
newroot.right = mirrorTree(root.left);
newroot.left = mirrorTree(root.right);
return newroot;
}
}