leetcode题解——226翻转二叉树

翻转一棵二叉树。
示例:
输入:
     4
     /  \
     2   7
      / \  / \
     1   3 6  9
输出:
     4
     /  \
     7   2
      / \  / \
     9  6 3  1


解题思路:

    二叉树的题,一般通过递归就可以解决了


C++

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        TreeNode* node = root;
        TreeNode* tmp = NULL;
        
        if(node) {
            tmp = node->left;
            node->left = node->right;
            node->right = tmp;
            
            invertTree(node->left);
            invertTree(node->right);
        }
        
        return root;
    }
};



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:
        node = root
        if node:
            tmp = node.left
            node.left = node.right
            node.right = tmp
            
            self.invertTree(node.left)
            self.invertTree(node.right)
            
        return root



猜你喜欢

转载自blog.51cto.com/12876518/2416872