题解 | #牛群的轴对称结构#
牛群的轴对称结构
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); } };