101对称二叉树

101对称二叉树,第1张

101对称二叉树

每次比较两个对称指针节点的值,可以设置两个指针,他们每次都一个向左,一个向右,每次递归来实现。

#include
#include
#include
using namespace std;
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if (root == nullptr)return true;
        else return check(root->left, root->right);
    }
    bool check(TreeNode* p, TreeNode* q) {
        if (!p && !q)return true;
        if (!p || !q)return false;
        return p->val == q->val && check(p->left, q->right) && check(p->right, q->left);
    }
};
int main() {
    Solution test;
    TreeNode* c = new TreeNode(3);
    TreeNode* b = new TreeNode(2, c, nullptr);
    TreeNode* a = new TreeNode(1, nullptr, b);
    cout << test.isSymmetric(a);
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5611185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存