Invert Binary Tree – LeetCode 226
Problem
Description
Invert a binary tree.
Answer
Original
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
class Solution { public: TreeNode* invertTree(TreeNode* root) { if(!root || root->left == root->right) return root; TreeNode *tmp = root->left; root->left = invertTree(root->right); root->right = invertTree(tmp); return root; } };
|
思路
看题说话。时间复杂度$O(n)$,空间复杂度$O(n)$。
耗时$3$ ms,排名$39.58\%$
Better
思路
简单的写成BFS,时间复杂度$O(n)$,空间复杂度$O(n)$。
耗时$3$ ms,排名$39.58\%$
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
class Solution { public: TreeNode* invertTree(TreeNode* root) { if (!root) return NULL; queue<TreeNode*> q; q.push(root); while (!q.empty()) { TreeNode *node = q.front(); q.pop(); TreeNode *tmp = node->left; node->left = node->right; node->right = tmp; if (node->left) q.push(node->left); if (node->right) q.push(node->right); } return root; } };
|