Symmetric Tree [LeetCode 101]

来源:互联网 发布:java类的命名规范 编辑:程序博客网 时间:2024/06/01 21:23

Answer


#include <iostream>using namespace std;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;        return helper(root -> left, root -> right);    }    bool helper(TreeNode *q, TreeNode *p) {        if (!q && !p) return true;        if (!q || !p) return false;        if (q -> val != p -> val) return false;        return helper(q -> left, p -> right) && helper (q -> right, p -> left);    }};void printTree(TreeNode *root) {    if (!root) return;    cout <<  root -> val;    printTree(root -> left);    printTree(root -> right);}int main() {    TreeNode * root = new TreeNode(1);    root -> left = new TreeNode (2);    root -> right = new TreeNode(2);    TreeNode * temp1 = root -> left;    temp1 -> left = new TreeNode(3);    temp1 -> right = new TreeNode(4);    temp1 = root -> right;    temp1 -> left = new TreeNode(4);    temp1 -> right = new TreeNode(3);    printTree(root);    Solution sol;    cout << endl;    cout << sol.isSymmetric(root);    return 0;}
原创粉丝点击