leetcode-100-Same Tree

来源:互联网 发布:河南省进出口数据 编辑:程序博客网 时间:2024/05/04 07:55

                                                  Same Tree


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.

判断两个树是否一样。


/** * 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 isSameTree(TreeNode* p, TreeNode* q) {  //递归        if(!p&&!q) return true;        if(!p&&q||p&&!q||p->val!=q->val) return false;          return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); // 左右子树都为true 才返回为true    }        bool isSameTree(TreeNode* p, TreeNode* q) {  //非递归        if(p==NULL&&q==NULL) return true;        else if((!p&&q)||(p&&!q)) return false;        queue<TreeNode*>T1,T2;        T1.push(p);        T2.push(q);        bool b=true;        while(!T1.empty()&&!T2.empty()){            TreeNode* x=T1.front();            TreeNode* y=T2.front();            T1.pop();            T2.pop();            if(x->val!=y->val) return false;            if((!x->left&&y->left)||(x->left&&!y->left)) return false;            else if(x->left&&y->left){                T1.push(x->left);                T2.push(y->left);            }            if((!x->right&&y->right)||(x->right&&!y->right)) return false;            else if(x->right&&y->right){                T1.push(x->right);                T2.push(y->right);            }        }        return true;    }};

 

0 0
原创粉丝点击