leetcode-cpp 101.对称二叉树

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;
	}
};

猜你喜欢

转载自blog.csdn.net/weixin_43255713/article/details/105524670