【剑指27】二叉树的镜像

题目描述

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

输入描述

image.png

分析

1.递归

   //1.递归
    public void Mirror(TreeNode root) {
        if (root == null) return;
        if (root.left == null && root.right == null) return;
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;

        Mirror(root.left);
        Mirror(root.right);

    }

2.非递归

    //2.非递归
    public void Mirror(TreeNode root) {
        if (root == null) return;
        if (root.left == null && root.right == null) return;
        Stack<TreeNode> stack = new Stack();
        while (true) {
            TreeNode temp = root.left;
            root.left = root.right;
            root.right = temp;

            if (root.right != null) {
                stack.push(root.right);
            }
            if (root.left != null) {
                root = root.left;
            } else {
                if (stack.empty()) break;
                root = stack.pop();
            }
        }

    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容