操作给定的二叉树,将其变换为源二叉树的镜像。
比如: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
递归法
我首先想到的是写一个swap方法,形参为根节点,将其左右节点调换,之后从根节点开始,在每一次迭代中,先将该节点左右子树调换,在对其左右节点分别使用Mirror方法,直到叶子节点处。直接返回根节点即可。
import java.util.*; public class Solution { public TreeNode Mirror (TreeNode pRoot) { // write code here if(pRoot==null || pRoot.left==null&&pRoot.right==null){ return pRoot; } swap(pRoot); Mirror(pRoot.left); Mirror(pRoot.right); return pRoot; } public void swap(TreeNode root){ TreeNode temp = root.left; root.left = root.right; root.right = temp; } }