Leetcode hot 100 191.对称二叉树
1.题目
101. 对称二叉树
给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false
2.代码及解析
class Solution {
bool issametree(TreeNode* p,TreeNode* q){
if(p==nullptr||q==nullptr){
return p==q;
}
return p->val==q->val &&issametree(p->left,q->right)&& issametree(p->right,q->left);
}
public:
bool isSymmetric(TreeNode* root) {
return issametree(root->left,root->right);
}
};
代码逻辑
递归终止条件:
如果两个节点都为空,返回
true
。如果其中一个节点为空,另一个不为空,返回
false
。递归过程:
比较当前两个节点的值。
递归比较左子树的左节点和右子树的右节点。
递归比较左子树的右节点和右子树的左节点。
示例
假设有以下二叉树:
复制
1 / \ 2 2 / \ / \ 3 4 4 3
根节点的左子树和右子树都是
2
,它们的值相等。左子树的左节点
3
和右子树的右节点3
相等。左子树的右节点
4
和右子树的左节点4
相等。因此,这棵树是对称的。