剑指offer---二叉树的镜像---java实现
来源:互联网 发布:coc国王升级数据 编辑:程序博客网 时间:2024/05/01 15:07
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
其实就是交换二叉树的左右子树,可用递归实现:
交换根节点的左右孩子,再分别对左孩子进行镜像和右孩子进行镜像
代码:
import java.util.LinkedList;public class MirrorTest{//递归 public void Mirror(TreeNode root) { if(root == null)return; else { TreeNode temp = root.left;//交换根节点的左右孩子 root.left = root.right; root.right = temp; Mirror(root.left);//镜像根节点的左孩子的左右子树 Mirror(root.right);//镜像根节点的右孩子的左右子树 } } //非递归实现 public void Mirror1(TreeNode root) { if(root == null) { return; } LinkedList<TreeNode> stack = new LinkedList<TreeNode>();//借助于辅助栈 TreeNode current = null;//存放出栈的栈顶元素 TreeNode temp = null; stack.push(root);//将根元素入栈 while(!stack.isEmpty()) {current = stack.pop();//将根元素出栈 交换根元素的左右子树if(current.left != null || current.right != null)//若左右孩子不为空则交换左右孩子{temp = current.left;current.left = current.right;current.right = temp;}//将根元素的左右孩子压入栈中 if(current.left != null)stack.push(current.left);if(current.right != null)stack.push(current.right); } }}
0 0
- java实现二叉树的镜像--剑指offer
- 剑指offer---二叉树的镜像---java实现
- 剑指offer:二叉树的镜像 代码实现
- 二叉树的镜像[剑指offer]之python实现
- 剑指Offer:二叉树的镜像(JAVA)
- 【剑指offer-Java版】19二叉树的镜像
- 剑指offer:二叉树的镜像(java)
- 剑指offer--面试题19:二叉树的镜像--Java实现
- 剑指Offer:面试题19——二叉树的镜像(java实现)
- 剑指Offer 面试题27:二叉树的镜像 Java代码实现
- 【剑指offer】二叉树的镜像
- [剑指Offer]二叉树的镜像
- 剑指offer--二叉树的镜像
- 剑指Offer-二叉树的镜像
- 《剑指offer》二叉树的镜像
- 剑指 offer:二叉树的镜像
- 【剑指offer】二叉树的镜像
- 剑指offer 二叉树的镜像
- 在mysql Navicat中怎样设置ID自动递增
- BZOJ 4197: [Noi2015]寿司晚宴 DP
- untiy 2D角色控制器
- SDWebImage、NSURL
- RecyclerView通用适配器Adapter,对Adapter的封装
- 剑指offer---二叉树的镜像---java实现
- java框架之spring基础应用
- Gradle version 2.2 is required. Current version is 2.10.
- python学习第三章(字典dict)
- 决策树
- springMVC + ProgressListener + CommonsMultipartResolver 上传进度查询
- HorseRace
- 第一个Servlet程序
- Linux查看日志命令