您的位置:首页 > 职场人生

码农小汪-剑指Offer之16-二叉树的镜像

2016-03-30 18:49 393 查看

题目描素

操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述:

二叉树的镜像定义:源二叉树

8

/ \

6 10

/ \ / \

5 7 9 11

镜像二叉树

8

/ \

10 6

/ \ / \

11 9 7 5

解题思路

根据这个题目来看,我们其实就是个遍历的问题,根据遍历就可以解决这个问题啦,然后换一下位置就好了。简单的遍历,先序遍历的递归实现和非递归的实现都行吗,自己喜欢什么就玩什么。

package JianzhiOffer;

import java.util.Stack;
/**
* 先序遍历,Stack实现mirror
* 其实就是个简单的交换位置而已
* @author JetWang
*
*/
public class Slution16 {
public void Mirror(TreeNode root) {
if(root==null){
return;
}
Stack<TreeNode> stack=new Stack<TreeNode>();
stack.push(root);
while(stack.size()>0){
TreeNode node=stack.pop();
if(node.left!=null||node.right!=null){
TreeNode temp=node.left;
node.left=node.right;
node.right=temp;
}
if(node.left!=null){
stack.push(node.left);
}
if(node.right!=null){
stack.push(node.right);
}

}
}
/**
* 递归实现
* @param root
*/
public void Mirror2(TreeNode root){
if(root==null){
return;
}
TreeNode temp=root.left;
root.left=root.right;
root.right=temp;
if(root.left!=null){
Mirror2(root.left);
}
if(root.right!=null){
Mirror2(root.right);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: