文章目录
- 1. 题目信息
- 2. 解题
- 2.1 DFS
- 2.2 BFS
1. 题目信息
翻转一棵二叉树。
示例:输入:4/ \2 7/ \ / \
1 3 6 9输出:4/ \7 2/ \ / \
9 6 3 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
《剑指Offer》同题:面试题27. 二叉树的镜像
2. 解题
2.1 DFS
/*** 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) { if(root){swap(root->left,root->right);invertTree(root->left);invertTree(root->right);}return root;}
};
class Solution {
public:TreeNode* mirrorTree(TreeNode* root) {if(!root)return root;mirrorTree(root->left);mirrorTree(root->right);swap(root->left,root->right);return root;}
};
2.2 BFS
利用队列,按层遍历
class Solution {//BFS
public:TreeNode* invertTree(TreeNode* root) {queue<TreeNode*> q;TreeNode* temp;q.push(root);while(!q.empty()){temp = q.front();if(temp){q.push(temp->left);q.push(temp->right);swap(temp->left, temp->right);}q.pop();}return root;}
};