[剑指offer][JAVA]面试题第[27]题[二叉树的镜像][递归][栈]
【问题描述】[中等]
请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: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]题[二叉树的镜像][递归][栈]相关推荐
- [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]
[问题描述][中等] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).示例:MinStack min ...
- [剑指offer][JAVA]面试题第[34]题[二叉树中和为某一值的路径][回溯]
[问题描述][中等] 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径.示例: 给定如下二叉树,以及目标和 sum = ...
- [剑指offer][JAVA]面试题第[26]题[树的子结构][递归]
[问题描述][中等] 输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值.例如: 给定的树 A:3/ \4 5/ \ ...
- [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]
[问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...
- [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]
[问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...
- [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]
[问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...
- [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]
[问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...
- [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]
[问题描述][中等] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回: ...
- [剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]
[问题描述][中等] 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题.示例 1:输入: ...
最新文章
- Pass Infrastructure基础架构(下)
- java 日期的工具类_java 日期时间工具类
- php-fpm 配置文件位置,php
- 前端解读面向切面编程(AOP)
- python中对比数组长度_在Python中检索数组长度的首选方法
- 知识星球如何升级为正式星球 知识星球怎么创建星球
- Java基础学习总结(41)——JPA常用注解
- [07] 使用注解完成IOC配置
- VS2010 Cocos2d-x 2.2创建模板
- 实践与交流:采取“硬刷”方式完美激活Windows 7旗舰版的具体方法步骤(图文详解教程)...
- pythondebug教学_python debug的使用方式
- 漏洞补丁:windwos补丁下载(MS17-010)
- 郭天祥10天学会单片机笔记学习资料(1.1)
- ACL---毕业论文-2
- springboot Basic Auth 暴露API 访问认证
- html文字设置为白色,html如何设置文字颜色白色
- 三无电子烟与即将到来的监管时代
- item_get - 获得淘宝商品详情
- 员工如何应对工作中的挫败感
- 移动OA:企业微信和传统OA厂商APP如何选择?
热门文章
- SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息
- LintCode 两两交换链表中的节点
- protobuf 数据解析的2种方法
- Python的逻辑运算符and小析
- javascript 获取上一页的url
- SendMessage函数的常用消息及其应用
- 百度新闻的索引机制(二):智能聚类
- Mongoose provide access to previous value of property in pre('save')
- win7下搭建小程序服务器,技术开发人员告诉你微信小程序怎么做
- matlab builder for java下载,Matlab Builder JA - Compile Matlab into a Java jar - Free Version?