- https://leetcode.cn/problems/symmetric-tree/
- 给你一个二叉树的根节点 root , 检查它是否轴对称。
- 对称二叉树是指镜像对称的二叉树,即左子树和右子树完全相同。判断一棵二叉树是否为对称二叉树,可以采用递归的方法进行求解。具体步骤如下:
-
定义一个递归函数,传入两个参数,分别表示左子树和右子树。
-
如果左子树和右子树都为空,返回 true。
-
如果左子树和右子树其中一个为空,返回 false。
-
如果左子树和右子树的根节点值不相同,返回 false。
-
递归判断左子树的左子树和右子树的右子树是否对称,以及左子树的右子树和右子树的左子树是否对称,如果有一个不对称,返回 false。
-
如果左子树和右子树都对称,返回 true。
code
递归函数的代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
bool judgeSymmetric(TreeNode* left, TreeNode* right) {
if (left == nullptr && right == nullptr) {
return true;
}
if (left == nullptr || right == nullptr) {
return false;
}
if (left->val != right->val) {
return false;
}
return judgeSymmetric(left->left, right->right) && judgeSymmetric(left->right, right->left);
}
bool isSymmetric(TreeNode* root) {
if (root == nullptr) {
return true;
}
return judgeSymmetric(root->left,root->right);
}
};
该文介绍了一种通过递归方法判断二叉树是否对称的算法。首先定义一个递归函数,比较左子树和右子树的根节点值及它们的左右子树,如果所有对应节点都对称则返回true,否则返回false。最后,通过调用此递归函数检查根节点的左右子树来确定整个二叉树是否对称。
220

被折叠的 条评论
为什么被折叠?



