101.对称二叉树
-
链接
leetcode
-
solution:
这题乍一看挺简单的,结果写着写着理不清头绪了,所以有点混乱
最后想了想 一棵树对称? 那不就给劈成两棵树吗?两棵树怎么让比较的时候是对称比较呢,可以用队列啊!
一个扔左孩子进去,一个扔右孩子进去,每次都取头,这样不就是比较对称了吗!需要注意这么几点:
- 第一次要扔两次根进去
- 扔左孩子 右孩子的时候不用判断是不是NULL了 统一由扔之前判断 判断这么几个东西
- 两个都是NULL 没问题!
- 只有一个为NULL 那对不起了 您歇着去吧
- 值不一样? 拜拜!
-
code
class Solution {
public:
bool isSymmetric(TreeNode* root) {
queue<TreeNode*> q;
q.push(root);
q.push(root);
while (!q.empty())
{
auto t1 = q.front();
q.pop();
auto t2 = q.front();
q.pop();
if (!t1 && !t2) continue;
if (!t1 || !t2)
return false;
if (t1->val != t2->val)
return false;//帅啊
q.push(t1->left);
q.push(t2->right);
q.push(t1->right);
q.push(t2->left);
}
return true;
}
};