題目描述
給定一個二叉樹,檢查它是否是鏡像對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的:
說明:
如果你可以運用遞歸和疊代兩種方法解決這個問題,會很加分。
來源:力扣(LeetCode) 連結:https://leetcode-cn.com/problems/symmetric-tree
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
思路
設要判斷兩節點t1,t2是否對稱:
- 如果兩個節點為空,那麼他們對稱
- 如果兩個節點不同時為空,他們不對稱
-
如果兩個節點都不空,并且
1.兩節點 t1, t2 存儲的值相同
2.t1->left 和 t2->right 對稱
3.t1->right和 t2->left 對稱
那麼他們對稱
代碼
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool sym(TreeNode*& t1, TreeNode*& t2)
{
if(t1 && t2 && t1->val==t2->val)
return sym(t1->left, t2->right) && sym(t1->right, t2->left);
if(!t1 && !t2) return true;
return false;
}
bool isSymmetric(TreeNode* root)
{
if(!root) return true;
return sym(root->left, root->right);
}
};