1. 递归
2. 栈
package org.skyeye.test;
import java.util.Stack;
public class TreeSwap {
public static class Tree{
private Object data;
private Tree left;
private Tree right;
public Tree(Object data, Tree left, Tree right) {
this.data = data;
this.left = left;
this.right = right;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Tree getLeft() {
return left;
}
public void setLeft(Tree left) {
this.left = left;
}
public Tree getRight() {
return right;
}
public void setRight(Tree right) {
this.right = right;
}
}
public static int getMaxDepth(Tree root) {
if(root==null) {
return 0;
}
return Math.max(getMaxDepth(root.left), getMaxDepth(root.right))+1;
}
public static void swap1(Tree root) {
if(root == null) {
return;
}
Tree tmp = root.left;
root.left = root.right;
root.right = tmp;
swap1(root.left);
swap1(root.right);
}
public static void swap2(Tree root) {
if(root==null) {
return;
}
Stack stack = new Stack();
stack.push(root);
while(!stack.empty()) {
Tree node = stack.pop();
Tree tmp = node.left;
node.left = node.right;
node.right = tmp;
if(node.left!=null) {
stack.push(node.left);
}
if(node.right!=null) {
stack.push(node.right);
}
}
}
public static void main(String[] args) {
Tree lll = new Tree(1, null, null);
Tree ll = new Tree(2, lll, null);
Tree lr = new Tree(3, null, null);
Tree l = new Tree(4, ll, lr);
Tree rl = new Tree(7, null, null);
Tree rr = new Tree(8, null, null);
Tree r = new Tree(6, rl, rr);
Tree root = new Tree(5, l, r);
swap2(root);
System.out.println(root);
}
}