> 文章列表 > 代码随想录_226翻转二叉树、101对称二叉树

代码随想录_226翻转二叉树、101对称二叉树

代码随想录_226翻转二叉树、101对称二叉树

 leetcode 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 = []
输出:[]

代码

// leetcode 226翻转二叉树
// 使用层序遍历的方法 依次翻转左右子树
class Solution {
public:TreeNode* invertTree(TreeNode* root) {if (root == nullptr){return root;}queue<TreeNode*> treeQue;treeQue.push(root);TreeNode* cur;while (!treeQue.empty()){cur = treeQue.front();treeQue.pop();//先入队 再交换if (cur->left != nullptr){treeQue.push(cur->left);}if (cur->right != nullptr){treeQue.push(cur->right);}swap(cur->left, cur->right);}return root;}
};

leetcode101.对称二叉树 

101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

代码

// 迭代
class Solution {
public:bool isSymmetric(TreeNode* root) {if (root == nullptr){return true;}queue<TreeNode*> treeQue;treeQue.push(root->left); //确定顺序 先左后右treeQue.push(root->right);while (!treeQue.empty()){TreeNode* tmp1 = treeQue.front();treeQue.pop();TreeNode* tmp2 = treeQue.front();treeQue.pop();if (tmp1 == nullptr && tmp2 == nullptr){continue;}if (tmp1 == nullptr || tmp2 == nullptr){// 上一个if已经排除了都为空的情况return false;}if (tmp1->val != tmp2->val){return false;}treeQue.push(tmp1->left);treeQue.push(tmp2->right);treeQue.push(tmp1->right);treeQue.push(tmp2->left);}return true;}
};