四步法:

1)如果两个子树都为空指针,则它们相等或对称

2如果两个子树只有一个为空指针,则它们不相等或不对称

3)如果两个子树根节点的值不相等,则它们不相等或不对称

4)根据相等或对称要求,进行递归处理。

//四步法判断一颗二叉树是否对称
//主函数
bool isSymmetric(TreeNode* root) {
  return root ? isSymmetric(root->left, root->right) : true;
}
//辅函数
bool isSymmetric(TreeNode* left, TreeNode* right) {
  if (!left && !right) {
    return true;
  }
  if (!left || !right) {
    return false;
  }
  if (left->val != right->val) {
    return false;
  }
  return isSymmetric(left->left, right->right) && isSymmetric(left->right, right->left);
}

 

 

posted on 2024-03-06 11:34  wshidaboss  阅读(64)  评论(0编辑  收藏  举报