题解 | #二叉树的镜像#

二叉树的镜像

http://www.nowcoder.com/practice/a9d0ecbacef9410ca97463e4a5c83be7

操作给定的二叉树,将其变换为源二叉树的镜像。

比如:    源二叉树 
            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;
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务