问题描述
问题分析
代码实现
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return root;
}
invertTree(root.left);
invertTree(root.right);
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
return root;
}
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return root;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (! stack.isEmpty()) {
TreeNode popNode = stack.pop();
if (popNode.left != null) {
stack.push(popNode.left);
}
if (popNode.right != null) {
stack.push(popNode.right);
}
TreeNode temp = popNode.left;
popNode.left = popNode.right;
popNode.right = temp;
}
return root;
}
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return root;
}
LinkedList<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(! queue.isEmpty()) {
TreeNode popNode = queue.remove();
if (popNode.left != null) {
queue.add(popNode.left);
}
if (popNode.right != null) {
queue.add(popNode.right);
}
TreeNode temp = popNode.left;
popNode.left = popNode.right;
popNode.right = temp;
}
return root;
}