题目
二叉树镜像
方案描述
其实就是从头到尾遍历左右孩子进行替换位置
代码实现
- TreeNode类:
/**
*
* @author xxx
* @date 2018/6/21
*/
public class TreeNode {
private int data;
private TreeNode leftTreeNode;
private TreeNode RightTreeNode;
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public TreeNode getLeftTreeNode() {
return leftTreeNode;
}
public void setLeftTreeNode(TreeNode leftTreeNode) {
this.leftTreeNode = leftTreeNode;
}
public TreeNode getRightTreeNode() {
return RightTreeNode;
}
public void setRightTreeNode(TreeNode rightTreeNode) {
RightTreeNode = rightTreeNode;
}
@Override
public String toString() {
return "TreeNode{" +
"data=" + data +
", leftTreeNode=" + leftTreeNode +
", RightTreeNode=" + RightTreeNode +
'}';
}
- 镜像方法:
public static void tranform(TreeNode treeNode){
if (null == treeNode){
return;
}
TreeNode leftTreeNode = treeNode.getLeftTreeNode();
TreeNode rightTreeNode = treeNode.getRightTreeNode();
treeNode.setLeftTreeNode(rightTreeNode);
treeNode.setRightTreeNode(leftTreeNode);
if (null != leftTreeNode){
tranform(leftTreeNode);
}
if (null != rightTreeNode){
tranform(rightTreeNode);
}
}
- 测试方法:
public static void main(String[] args) {
TreeNode treeNode1 = new TreeNode();
treeNode1.setData(1);
TreeNode treeNode2 = new TreeNode();
TreeNode treeNode3 = new TreeNode();
TreeNode treeNode4 = new TreeNode();
TreeNode treeNode5 = new TreeNode();
TreeNode treeNode6 = new TreeNode();
TreeNode treeNode7 = new TreeNode();
treeNode2.setData(2);
treeNode4.setData(4);
treeNode5.setData(5);
treeNode6.setData(6);
treeNode7.setData(7);
treeNode1.setLeftTreeNode(treeNode2);
treeNode2.setLeftTreeNode(treeNode3);
treeNode2.setRightTreeNode(treeNode4);
treeNode1.setRightTreeNode(treeNode5);
treeNode5.setLeftTreeNode(treeNode6);
treeNode5.setRightTreeNode(treeNode7);
System.out.println(treeNode1);
tranform(treeNode1);
System.out.println(treeNode1);
}