Same Tree

来源:互联网 发布:emerson college知乎 编辑:程序博客网 时间:2024/05/08 06:58
-----QUESTION-----

Given two binary trees, write a function to check if they are equal or not.

Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

-----SOLUTION-----
class Solution {public:    bool isSameTree(TreeNode *p, TreeNode *q) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(!p && !q) return true;        else if(!p || !q) return false;                return cmp(p, q);     }    bool cmp(TreeNode * node1, TreeNode* node2)    {        int result1 = true;        int result2 = true;        if(node1->val!=node2->val) return false;        else        {            if((node1->left==NULL && node2->left != NULL) ||            (node1->left!=NULL && node2->left == NULL)||            (node1->right!=NULL && node2->right == NULL)||            (node1->right==NULL && node2->right != NULL))            {                return false;            }            if((node1->left == NULL && node2->left == NULL)&&            (node1->right == NULL && node2->right == NULL))            {                return true;            }            if(node1->left != NULL)            {                result1 = cmp(node1->left,node2->left);            }            if(node1->right != NULL)            {                result2 = cmp(node1->right,node2->right);            }             return (result1 && result2);        }    }};

0 0