- 树中节点数目范围在
[0, 100]
内
-100 <= Node.val <= 100
方法一:递归法
class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
// 递归翻转左右子树
TreeNode left = invertTree(root.left);
TreeNode right = invertTree(root.right);
// 交换左右子树
root.left = right;
root.right = left;
return root;
}
}
方法二:迭代法(使用栈)
import java.util.Stack;
class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pop();
// 交换左右子树
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);
}
}
return root;
}
}