【C++】判斷一顆二叉樹是否對稱

wshidaboss發表於2024-03-06

四步法:

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);
}

相關文章