[LeetCode] 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.

Analysis:

Recursively check if left and right child, if they are different or there one is null, return false.

c++

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

Java

public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null && q== null)
        	return true;
        if(p == null || q== null)
        	return false;
        if(p.val == q.val)
        	return (isSameTree(p.left, q.left) && isSameTree(p.right, q.right));
        else 
        	return false;
    }

iterative version

public boolean isSameTree2(TreeNode p, TreeNode q){
		Stack<TreeNode> pstack = new Stack<>();
		Stack<TreeNode> qStack = new Stack<>();
		if(p==null) return q==null;
		if(q==null) return p==null;
		pstack.push(p);
		qStack.push(q);
		while(!pstack.isEmpty()&& !qStack.isEmpty()){
			TreeNode t1 = pstack.pop();
			TreeNode t2 = qStack.pop();
			if(t1==null && t2==null) continue;
			else if(t1!=null && t2!=null && t1.val==t2.val){
				pstack.push(t1.left);
				pstack.push(t1.right);
				qStack.push(t2.left);
				qStack.push(t2.right);
			}else {
				return false;
			}
			
		}
		return true;
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值