答案:
Java
class Solution {
public TreeNode invertTree(TreeNode root) {
if (root != null) {
invertTree(root.left);
invertTree(root.right);
TreeNode temp = root.left;
root.left= root.right;
root.right = temp;
}
return root;
}
}
补充:前序遍历
public void preOrder(TreeNode root){
if(root != null){
System.out.print(root.value+”->”);
preOrder(root.left);
preOrder(root.right)
}
}
非递归
public void preOrderTraverse2(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
TreeNode node = root;
while (node != null || !stack.empty()) {
if (node != null) {
System.out.print(node.value + "->");
stack.push(node);
node = node.left;
} else {
TreeNode tem = stack.pop();
node = tem.right;
}
}
}
中序遍历
public void preOrder(TreeNode root){
if(root != null){
preOrder(root.left);
System.out.print(root.value+”->”);
preOrder(root.right)
}
}
非递归
public void preOrderTraverse2(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
TreeNode node = root;
while (node != null || !stack.empty()) {
if (node != null) {
stack.push(node);
node = node.left;
} else {
TreeNode temp = stack.pop();
System.out.print(temp.value+”->”);
node = temp.right;
}
}
}
后序遍历
public void preOrder(TreeNode root){
if(root != null){
preOrder(root.left);
preOrder(root.right)
System.out.print(root.value+”->”);
}
}
非递归
public void preOrderTraverse2(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
TreeNode cur, pre = null;
stack.push(root);
while (!stack.empty()) {
cur = stack.peek();
if ((cur.left == null && cur.right == null) || (pre != null && (pre == cur.left || pre == cur.right))) {
System.out.print(cur.val + "->");
stack.pop();
pre = cur;
} else {
if (cur.right != null)
stack.push(cur.right);
if (cur.left != null)
stack.push(cur.left);
}
}
}
执行演示
入栈 :4 7 2 3 1 pre = null, cur = 1
出栈:1 (4 7 2 3) cur = 1, pre = 1
出栈:3 (4 7 2) cur = 3,pre = 3
出栈:2 (4 7) cur = 2,pre = 2
入栈:9 ,6 (4 7 9 6) cur = 7,pre = 2
出栈:6 (4 7 9) cur = 6,pre = 6
出栈:9 (4 7) cur = 9 ,pre = 9
出栈:7,4
结束