101. 对称二叉树
难度简单
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
思路1.0:
匹配类二叉树的套路
从根节点的左右子树两处开始向下遍历。两处遍历的顺序相反,诸如2->left,2->right
两处对称的判断条件有:
1)元素相等
2)同时碰到空子树
代码1.0(已完成):
class Solution {
public:
bool isMatching(TreeNode* TnodeA,TreeNode* TnodeB)
{
if (TnodeA == NULL && TnodeB == NULL) return true;
if (TnodeA == NULL || TnodeB == NULL) return false;
return (TnodeA->val == TnodeB->val) && isMatching(TnodeA->left, TnodeB->right) && isMatching(TnodeA->right, TnodeB->left);
}
bool isSymmetric(TreeNode* root) {
if (root == NULL) return true;
return isMatching(root->left, root->right);
}
};