免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/gjh13/article/details/90737952
方法の一つ:再帰
問題解決のアイデア:
最初の現在のルートのルートがヌルであるかどうかを判断し、もしそうであれば、真を返します。
IsSame次に、関数を呼び出し、左と右のノードが対称性の要件を満たしているか否かが判断されます。
isSame機能では、核となるアイデアは、R1->左== [2->右とR1->右== [2->左を比較する再帰的です。
/**
* 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 isSymmetric(TreeNode* root) {
if(!root) return true;
else return isSame(root->left, root->right);
}
bool isSame(TreeNode* r1, TreeNode* r2){
if(!r1 || !r2) return r1 == r2;
else{
return (r1->val == r2->val) && isSame(r1->left, r2->right) && isSame(r1->right, r2->left);
}
}
};