LeetCode中二叉树镜像的实现

题目

      

 

 

 

实现思路:  

      通过递归的思路来实现该过程。

步骤:

      1. 判断当前树是否为空。如果为空直接返回null,反之则执行下一步。
      2. 判断当前左右子树都为空时,直接返回该树。反之执行下一步
      3. 判断当前左右子树有一个不为空时,
        • 当右子树不为空且左子树为空时,将左子树复制到右子树上。之后让左子树为空。
        • 当右子树为空但左子树不为空时,将左子树复制到右子树上。之后让右子树为空。
        • 当两子树都不为空时,重复前面上述步骤。之后将左右子树调换

           4. 返回当前树。

 

 

Java代码

 1  public TreeNode mirrorTree(TreeNode root) {
 2          if(root==null){
 3             return null;
 4         }else if (root.left!=null||root.right != null){
 6             if (root.right==null){
 7                 root.left=mirrorTree(root.left);
 8                 TreeNode treeNode = new TreeNode(root.left.val);
 9                 treeNode.left=root.left.left;
10                 treeNode.right=root.left.right;
11                 root.left=root.right;
12                 root.right=treeNode;
13             }else if (root.left == null) {
14                
15                 root.right=mirrorTree(root.right);
16                 TreeNode treeNode = new TreeNode(root.right.val);
17                 treeNode.left=root.right.left;
18                 treeNode.right=root.right.right;
19                 root.right=root.left;
20                 root.left=treeNode;
21             }else {
22                 root.left=mirrorTree(root.left);
23                 root.right=mirrorTree(root.right);
24                 TreeNode treeNode = new TreeNode(root.right.val);
25                 treeNode.left=root.right.left;
26                 treeNode.right=root.right.right;
27                 root.right=root.left;
28                 root.left=treeNode;
29             }
30         }else {
31             return root;
32         }
33         return root;
34     }

 

 

 

    

      

posted @ 2020-12-14 00:28  UZI永远地神  阅读(64)  评论(0)    收藏  举报