226. 翻转二叉树
226. 翻转二叉树
给你一棵二叉树的根节点
root ,翻转这棵二叉树,并返回其根节点。
示例 1:

输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]
示例 2:

输入:root = [2,1,3] 输出:[2,3,1]
示例 3:
输入:root = [] 输出:[]
提示:
- 树中节点数目范围在
[0, 100]内 -100 <= Node.val <= 100
递归解法:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val(0), left(nullptr), right(nullptr) {} 8 * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 9 * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} 10 * }; 11 */ 12 class Solution { 13 public: 14 TreeNode* invertTree(TreeNode* root) { 15 if (root == nullptr) { 16 return nullptr; 17 } 18 TreeNode *leftNode = invertTree(root->left); 19 TreeNode *rightNode = invertTree(root->right); 20 root->right = leftNode; 21 root->left = rightNode; 22 return root; 23 } 24 };
BFS解法:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val(0), left(nullptr), right(nullptr) {} 8 * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 9 * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} 10 * }; 11 */ 12 class Solution { 13 public: 14 TreeNode* invertTree(TreeNode* root) { 15 if (root == nullptr) { 16 return nullptr; 17 } 18 queue<TreeNode *> q; 19 q.push(root); 20 while (!q.empty()) { 21 TreeNode *temp = q.front(); 22 q.pop(); 23 swap(temp->left, temp->right); 24 if (temp->left != nullptr) { 25 q.push(temp->left); 26 } 27 if (temp->right != nullptr) { 28 q.push(temp->right); 29 } 30 } 31 return root; 32 } 33 };
浙公网安备 33010602011771号