题目描述
Invert a binary tree.
题目大意:交换二叉树的左右子树
样例
Example:
Input:
Output:
python解法
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root:
return root
if root.left or root.right:
root.left, root.right = root.right, root.left
if root.left:
self.invertTree(root.left)
if root.right:
self.invertTree(root.right)
return root
Runtime: 32 ms, faster than 92.37% of Python3 online submissions for Invert Binary Tree.
Memory Usage: 13.7 MB, less than 5.41% of Python3 online submissions for Invert Binary Tree.
题后反思:
- python可以直接交换变量的原因应该是右边的变量加了括号之后表示是元组,在进行赋值时再拆包。
- 交换左右子树的时候要用if条件判断,不能用elif
C语言解法
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* invertTree(struct TreeNode* root){
if (! root)
return root;
if (root->left || root->right)
{
struct TreeNode*p = root -> left;
root -> left = root -> right;
root -> right = p;
}
if (root -> left)
invertTree(root->left);
if (root -> right)
invertTree(root -> right);
return root;
}
Runtime: 4 ms, faster than 60.90% of C online submissions for Invert Binary Tree.
Memory Usage: 7 MB, less than 100.00% of C online submissions for Invert Binary Tree.
题后反思:无
文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步