Leetcode 101対称バイナリツリーの問題解決のアイデアやC ++で実装

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。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);
        }
    }
};

 

 

 

おすすめ

転載: blog.csdn.net/gjh13/article/details/90737952