【问题描述】[中等]

请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: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]

【解答思路】

1. 递归


时间复杂度:O(N) 空间复杂度:O(N)

class Solution {public TreeNode mirrorTree(TreeNode root) {if(root == null) return null;TreeNode tmp = root.left;root.left = mirrorTree(root.right);root.right = mirrorTree(tmp);return root;}
}
 public TreeNode mirrorTree(TreeNode root) {if(root == null) return null;TreeNode leftRoot = mirrorTree(root.right);TreeNode rightRoot = mirrorTree(root.left);root.left = leftRoot;root.right = rightRoot;return root;}
2. 辅助栈(或队列)


时间复杂度:O(N) 空间复杂度:O(1)

class Solution {public TreeNode mirrorTree(TreeNode root) {if(root == null) return null;Stack<TreeNode> stack = new Stack<>();stack.add(root);//Stack<TreeNode> stack = new Stack<>() {{ add(root); }};while(!stack.isEmpty()) {TreeNode node = stack.pop();if(node.left != null) stack.add(node.left);if(node.right != null) stack.add(node.right);TreeNode tmp = node.left;node.left = node.right;node.right = tmp;}return root;}
}

【总结】

1.二叉树镜像的定义

2.二叉树常见思路 :递归 栈
3.学习其翻转时暂存变量的思想 递归要有出口

转载;https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/solution/mian-shi-ti-27-er-cha-shu-de-jing-xiang-di-gui-fu-/

[剑指offer][JAVA]面试题第[27]题[二叉树的镜像][递归][栈]相关推荐

  1. [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]

    [问题描述][中等] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).示例:MinStack min ...

  2. [剑指offer][JAVA]面试题第[34]题[二叉树中和为某一值的路径][回溯]

    [问题描述][中等] 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径.示例: 给定如下二叉树,以及目标和 sum = ...

  3. [剑指offer][JAVA]面试题第[26]题[树的子结构][递归]

    [问题描述][中等] 输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值.例如: 给定的树 A:3/ \4 5/ \ ...

  4. [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]

    [问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...

  5. [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]

    [问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...

  6. [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]

    [问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...

  7. [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]

    [问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...

  8. [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]

    [问题描述][中等] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回: ...

  9. [剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]

    [问题描述][中等] 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题.示例 1:输入: ...

最新文章

  1. Pass Infrastructure基础架构(下)
  2. java 日期的工具类_java 日期时间工具类
  3. php-fpm 配置文件位置,php
  4. 前端解读面向切面编程(AOP)
  5. python中对比数组长度_在Python中检索数组长度的首选方法
  6. 知识星球如何升级为正式星球 知识星球怎么创建星球
  7. Java基础学习总结(41)——JPA常用注解
  8. [07] 使用注解完成IOC配置
  9. VS2010 Cocos2d-x 2.2创建模板
  10. 实践与交流:采取“硬刷”方式完美激活Windows 7旗舰版的具体方法步骤(图文详解教程)...
  11. pythondebug教学_python debug的使用方式
  12. 漏洞补丁:windwos补丁下载(MS17-010)
  13. 郭天祥10天学会单片机笔记学习资料(1.1)
  14. ACL---毕业论文-2
  15. springboot Basic Auth 暴露API 访问认证
  16. html文字设置为白色,html如何设置文字颜色白色
  17. 三无电子烟与即将到来的监管时代
  18. item_get - 获得淘宝商品详情
  19. 员工如何应对工作中的挫败感
  20. 移动OA:企业微信和传统OA厂商APP如何选择?

热门文章

  1. SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息
  2. LintCode 两两交换链表中的节点
  3. protobuf 数据解析的2种方法
  4. Python的逻辑运算符and小析
  5. javascript 获取上一页的url
  6. SendMessage函数的常用消息及其应用
  7. 百度新闻的索引机制(二):智能聚类
  8. Mongoose provide access to previous value of property in pre('save')
  9. win7下搭建小程序服务器,技术开发人员告诉你微信小程序怎么做
  10. matlab builder for java下载,Matlab Builder JA - Compile Matlab into a Java jar - Free Version?