zoukankan      html  css  js  c++  java
  • 剑指offer_18:二叉树的镜像

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

    例如输入:

    镜像输出:

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

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

    1、递归

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

    2、DFS

    /**
     * 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;
            Stack<TreeNode> stack=new Stack<>();
            stack.push(root);
            while(!stack.isEmpty()){
                TreeNode node=stack.pop();
                if(node.left!=null) stack.push(node.left);
                if(node.right!=null) stack.push(node.right);
                TreeNode temp=node.left;
                node.left=node.right;
                node.right=temp;
            }
            return root;
        }
    }
    

    3、BFS

    /**
     * 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;
            Queue<TreeNode> queue=new LinkedList<>();
            queue.offer(root);
            while(!queue.isEmpty()){
                TreeNode node=queue.poll();
                TreeNode t=node.left;
                node.left=node.right;
                node.right=t;
                if(node.left!=null) queue.offer(node.left);
                if(node.right!=null) queue.offer(node.right);
            }
            return root;
        }
    }
    
  • 相关阅读:
    fork操作
    PHP操作Memcached
    对nginx进行平滑升级
    Codeforces Round #457 (Div. 2) B
    codeforces Educational Codeforces Round 39 (Rated for Div. 2) D
    矩阵相乘
    求组合数板子
    斯特林(Stirling)公式 求大数阶乘的位数
    codeforces Gym 101572 I 有向图最小环路径
    Floyd算法——保存路径——输出路径 HDU1385
  • 原文地址:https://www.cnblogs.com/xyz-1024/p/14146293.html
Copyright © 2011-2022 走看看