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;
        }
    }
    
  • 相关阅读:
    jquery 自执行笔记
    快速搭建动态web工程并且进行数据库交互页面呈现
    仿途牛导航
    一些jquery技巧
    Jquery 事件冒泡 以及阻止默认事件
    absolute(绝对定位)和 relative(相对定位)
    java 日期格式转换,加减等
    StringTokenizer 简单的描述
    运算符和表达式
    Eclipse常用命令+ 简单的自动售票程序
  • 原文地址:https://www.cnblogs.com/xyz-1024/p/14146293.html
Copyright © 2011-2022 走看看