⭐️ 题目描述
🌟 leetcode链接:对称二叉树
思路:
这道题和 leetcode 100.相同的树
类似,是上一道的变形题。✨leetcode 100.相同的树
代码链接:【往期文章】leetcode 100.相同的树。这道题把根的左子树和右子树看作两个不同的树来,需要注意的是,每次往下递归的时候,是当前 root->left
与 root->right
和 root->right
与 root->left
来判断是否是相同的树(因为是判断是否对称)。
1️⃣ 代码:
bool isSame (struct TreeNode* tree1 , struct TreeNode* tree2) {
// 如果两个都为空 说明结构相同
if (tree1 == NULL && tree2 == NULL) {
return true;
}
// 来到这里有三种情况
// 1.tree1 == NULL tree2 != NULL
// 2.tree1 != NULL tree2 == NULL
// 一个节点为空 一个节点不为空 结构不同返回 false
if (tree1 == NULL || tree2 == NULL) {
return false;
}
// 3.tree1 != NULL tree2 != NULL
if (tree1->val != tree2->val) {
return false;
}
return isSame(tree1->left , tree2->right) &&
isSame(tree1->right , tree2->left);
}
// 把左树和右树当作两个不同的树去比较
bool isSymmetric(struct TreeNode* root){
if (root == NULL) {
return true;
}
return isSame(root->left , root->right);
}
递归流程图: