二叉树的镜像
来源:互联网 发布:淘宝装修日记精华帖 编辑:程序博客网 时间:2024/04/28 06:02
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。
通过画图,可知二叉树的镜像如下图所示:
Java代码:package offer;import java.util.LinkedList;import java.util.Queue;public class MirrorRecursively {/* * 求二叉树的镜像 * 先前序遍历这棵树的每个结点,如果遍历到的结点有子节点,就交换它的两个子节点。 * 当交换完所有非页子结点的左右子节点之后,就得到了树的镜像。 */public static void mirrorRecursively(BinaryTreeNode root){if(root==null)return;if(root.left==null && root.right==null)return;BinaryTreeNode tmp = root.left;root.left = root.right;root.right = tmp;mirrorRecursively(root.left);mirrorRecursively(root.right);}/** * 循环解法 * @param root */public static void mirrorLoop(BinaryTreeNode root){if(root==null)return;if(root.left==null && root.right==null)return;BinaryTreeNode tmp1 = root;Queue<BinaryTreeNode> list = new LinkedList<BinaryTreeNode>();list.add(tmp1);while(!list.isEmpty()){BinaryTreeNode node = list.poll();swap(node.left,node.right);if(node.left!=null)list.add(node.left);if(node.right!=null)list.add(node.right);}}private static void swap(BinaryTreeNode left,BinaryTreeNode right){BinaryTreeNode tmp = left;left = right;right = tmp;}}
0 0
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- Unix/Linux移动某目录下匹配规则文件至另一目录
- BZOJ 3504
- #define和const之间的对比分析
- CXX0025: 错误: 运算符要求类/结构/联合
- XML简介及解析
- 二叉树的镜像
- Hibernate多列作为联合主键(六)
- aop:aspectj-autoproxy 不能生效
- THE Perceptron Convergence Theorem
- 队列的基本操作
- Netbeans jdkhome 配置
- nyoj 飞翔d
- c语言操作数据库sql
- UESTC--1253--阿里巴巴和n个大盗(博弈)