226. 翻转二叉树
2023/8/31小于 1 分钟
226. 翻转二叉树
简单解题思路:使用递归交换左右子树
Java
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) return root;
TreeNode temp = new TreeNode();
if(root.left != null && root.right != null) {
temp = root.left;
root.left = root.right;
root.right = temp;
invertTree(root.left);
invertTree(root.right);
}else if(root.left == null) {
root.left = root.right;
root.right = null;
invertTree(root.left);
}else if(root.right == null) {
root.right = root.left;
root.left = null;
invertTree(root.right);
}
return root;
}
}Python
class Solution:
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if(root == None): return
if(root.left != None and root.right != None):
tmp = root.left
root.left = root.right
root.right = tmp
self.invertTree(root.left)
self.invertTree(root.right)
elif(root.left != None):
root.right = root.left
root.left = None
self.invertTree(root.right)
else:
root.left = root.right
root.right = None
self.invertTree(root.left)
return root