給定一個二叉樹,檢查它是否是鏡像對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下麵這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的: 1 / \ 2 2 \ \ 3 3 說明: 如果你可以運用遞歸和迭代兩 ...
給定一個二叉樹,檢查它是否是鏡像對稱的。
例如,二叉樹 [1,2,2,3,4,4,3]
是對稱的。
1 / \ 2 2 / \ / \ 3 4 4 3
但是下麵這個 [1,2,2,null,3,null,3]
則不是鏡像對稱的:
1 / \ 2 2 \ \ 3 3
說明:
如果你可以運用遞歸和迭代兩種方法解決這個問題,會很加分。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool Symmetric(struct TreeNode *left,struct TreeNode *right); bool isSymmetric(struct TreeNode* root) { if(!root) { return true; } return Symmetric(root->left,root->right); } bool Symmetric(struct TreeNode *left,struct TreeNode *right) { if (left == NULL && right == NULL) { return true; } if (left == NULL || right == NULL) { return false; } if ( left->val != right->val) { return false; } return Symmetric(left->left,right->right) && Symmetric(left->right,right->left); }