JZ18 二叉树的镜像
原题链接
描述
操作给定的二叉树,将其变换为源二叉树的镜像。
比如: 源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
示例
输入:{8,6,10,5,7,9,11}
返回值:{8,10,6,11,9,7,5}
思路
使用递归不停地交换左右子树就可以了吧。
解答
import java.util.*;
public class Solution {
public void swap(TreeNode root){
TreeNode tmp;
tmp = root.left;
root.left = root.right;
root.right = tmp;
}
public TreeNode Mirror(TreeNode pRoot) {
if (pRoot==null)
return null;
swap(pRoot);
Mirror(pRoot.left);
Mirror(pRoot.right);
return pRoot;
}
}
还有一个非递归版本:
import java.util.*;
public class Solution {
public TreeNode Mirror(TreeNode pRoot) {
if (pRoot==null)
return null;
Stack<TreeNode> stack = new Stack<>();
stack.push(pRoot);
while (!stack.empty()){
TreeNode t = stack.pop();
TreeNode tmp = t.left;
t.left = t.right;
t.right = tmp;
if (t.left != null) stack.push(t.left);
if (t.right != null) stack.push(t.right);
}
return pRoot;
}
}
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15104970.html