leetcode-100. Same Tree c++

1、题目来源:100. Same Tree

2、题目:

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.

3、思路:

    1)BFS遍历两棵树;

    2)一旦结构不同(对应的一个节点为空,一个节点不为空),不同直接返回false;

    3)如果结构相同(),比较值是否相同,不同直接返回false;


4、我的源代码:

/**
* 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) {
        bool flag=true;
		queue que1,que2;
		que1.push(p);
		que2.push(q);
		if(p==NULL&&q==NULL)
			return true;
		
		while(!que1.empty()||!que2.empty()){
		    
			if((que1.front()==NULL&&que2.front()!=NULL)||(que1.front()!=NULL&&que2.front()==NULL)){
				return false;
			}
			else if(que1.front()->val!=que2.front()->val)
			    return false;
            
			int i,n=que1.size()>que2.size()?que1.size():que2.size();
		//	cout<<"n="<left==NULL&&node2->left!=NULL)||(node1->left!=NULL&&node2->left==NULL))
					return false;
				
				else if(node1->left!=NULL&&node2->left!=NULL){
				    if(node1->left->val!=node2->left->val)
				        return false;
				    else{
				        que1.push(node1->left);
				    	que2.push(node2->left);
				    }
					
				}
				if((node1->right==NULL&&node2->right!=NULL)||(node1->right!=NULL&&node2->right==NULL))
					return false;
				else if(node1->right!=NULL&&node1->right!=NULL){
				    if(node1->right->val!=node2->right->val)
				        return false;
					else{
					    que1.push(node1->right);
					    que2.push(node2->right);
					}
				}
			}
		}
		return flag;
    }
};

5、讨论区的精彩代码(自己也不错啦#_3,3_#加油~),递归的力量啊(来源: 点击打开链接)

bool isSameTree(TreeNode* p, TreeNode* q) {
    if(p==NULL&&q==NULL) return true;
    if(p==NULL&&q!=NULL||p!=NULL&&q==NULL||p->val!=q->val) return false;
    return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}


你可能感兴趣的:(leetcode,leetcode,100.,Same,Tree,c++,BFS)