四步法:
(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);
}