题解 | #牛群的轴对称结构#
牛群的轴对称结构
https://www.nowcoder.com/practice/a200535760fb4da3a4568c03c1563689
考察的知识点:二叉树的对称性判断;
解答方法分析:
- 函数
isSymmetric用于判断给定的二叉树是否是对称的。 - 首先检查根节点是否为空,如果为空,则认为是对称的。
- 调用辅助函数
isMirror,判断root->left子树和root->right子树是否是镜像对称的。 - 函数
isMirror是一个递归函数,用于判断两个节点left和right是否是镜像对称的。 - 如果两个节点都为空,认为是镜像对称的。
- 如果其中一个节点为空,另一个节点不为空,认为不是镜像对称的。
- 如果两个节点的值不相等,认为不是镜像对称的。
- 递归地判断
left->left和right->right是否是镜像对称的,以及left->right和right->left是否是镜像对称的,如果两个条件都满足,认为是镜像对称的。
所用编程语言:C++;
完整编程代码:↓
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return bool布尔型
*/
bool isSymmetric(TreeNode* root) {
if (!root) return true;
return isMirror(root->left, root->right);
}
bool isMirror(TreeNode* left, TreeNode* right) {
if (!left && !right)
return true;
if (!left || !right)
return false;
if (left->val != right->val)
return false;
return isMirror(left->left, right->right) && isMirror(left->right, right->left);
}
};


