美文网首页
LeetCode题解之二叉树的镜像

LeetCode题解之二叉树的镜像

作者: l1fe1 | 来源:发表于2020-07-23 20:02 被阅读0次

    二叉树的镜像

    题目描述

    请完成一个函数,输入一个二叉树,该函数输出它的镜像。

    例如输入:

     4
    

    /
    2 7
    / \ /
    1 3 6 9
    镜像输出:

     4
    

    /
    7 2
    / \ /
    9 6 3 1

    示例1 :

    输入:root = [4,2,7,1,3,6,9]
    输出:[4,7,2,9,6,3,1]
    

    限制:
    0 <= 节点个数 <= 1000

    解题思路

    使用递归遍历二叉树来交换树上每个节点的左右节点,注意,需要使用一个临时节点来辅助进行节点的交换(和两个数的交换一样)。

    复杂度分析

    • 时间复杂度:O(n),其中 n 为二叉树节点的数量,建立镜像需要遍历二叉树的所有节点,因此时间复杂度为 O(n)。
    • 空间复杂度:O(n)。

    代码实现

    /**
     * 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) {
                return null;
            }
            TreeNode left = root.left;
            root.left = mirrorTree(root.right);
            root.right = mirrorTree(left);
            return root;
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode题解之二叉树的镜像

          本文链接:https://www.haomeiwen.com/subject/srxklktx.html