给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isMirror(struct TreeNode* t1, struct TreeNode* t2){
if(t1 == NULL && t2 == NULL) return true;
if(t1 == NULL || t2 == NULL) return false;
return (t1 -> val == t2 -> val) && isMirror(t1 -> left, t2 -> right) && isMirror(t1 -> right, t2 -> left);
}
bool isSymmetric(struct TreeNode* root) {
//满足对称的条件,根节点的值相等,每棵树的右子树均与另一棵树的左子树对称
return isMirror(root, root);
}

本文介绍了一种检查二叉树是否为镜像对称的有效算法。通过对二叉树节点进行递归比较,判断其左右子树是否互为镜像,从而实现对称性验证。文章提供了具体的C语言实现代码。
236

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



