###### tags: `Leetcode` `easy` `tree` `python` `c++` `Top 100 Liked Questions` # 226. Invert Binary Tree ## [題目連結:] https://leetcode.com/problems/invert-binary-tree/description/ ## 題目: Given the ```root``` of a binary tree, invert the tree, and return its root. ![](https://i.imgur.com/NrqY0hL.png) ![](https://i.imgur.com/uTYlLv0.png) ## 解題想法: * 此題為反轉一個二元樹 * 遞迴處理即可 * root的左子樹為:遞迴原本root的右子 * root的右子樹為:遞迴原本root的左子 ## Python: ``` python= # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def invertTree(self, root): """ :type root: TreeNode :rtype: TreeNode """ if not root: return None newLeft=self.invertTree(root.right) newRight=self.invertTree(root.left) root.left=newLeft root.right=newRight return root ``` ## C++: ``` cpp= /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: TreeNode* invertTree(TreeNode* root) { if (root==nullptr) return nullptr; TreeNode* newLeft= invertTree(root->right); TreeNode* newRight= invertTree(root->left); root->left= newLeft; root->right= newRight; return root; } }; ```