美文网首页
每日一题——二叉树的镜像

每日一题——二叉树的镜像

作者: 拉普拉斯妖kk | 来源:发表于2023-08-15 22:53 被阅读0次

    题目


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

    数据范围:二叉树的节点数 0≤n≤1000 , 二叉树每个节点的值 0≤val≤1000

    要求: 空间复杂度 O(n) 。本题也有原地操作,即空间复杂度 O(1) 的解法,时间复杂度 O(n)

    比如:
    源二叉树

    镜像二叉树

    参数说明:二叉树类,二叉树序列化是通过按层遍历,#代表这这个节点为空节点,举个例子:

      1
     / \
    2   3
       /
      4
    

    以上二叉树会被序列化为 {1,2,3,#,#,4}

    示例1

    输入:
    {8,6,10,5,7,9,11}
    返回值:
    {8,10,6,11,9,7,5}
    

    示例2

    输入:
    {}
    返回值:
    {}
    

    思路


    • 递归的交换左右子树
    • 使用栈辅助,dfs遍历二叉树,交换左右子节点。(解答略)

    解答代码


    /**
     * struct TreeNode {
     *  int val;
     *  struct TreeNode *left;
     *  struct TreeNode *right;
     *  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     * };
     */
    class Solution {
    public:
        /**
         * @param pRoot TreeNode类 
         * @return TreeNode类
         */
        TreeNode* Mirror(TreeNode* pRoot) {
            // write code here
            if (pRoot == nullptr) {
                return nullptr;
            }
            auto newRoot = new TreeNode(pRoot->val);
            newRoot->left = Mirror(pRoot->right);
            newRoot->right = Mirror(pRoot->left);
            return newRoot;
        }
    };
    

    相关文章

      网友评论

          本文标题:每日一题——二叉树的镜像

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