码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Same Tree

时间:2015-04-26 13:50:09      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

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 binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
    	if (p == null && q == null) return true;
    	else if (p != null && q == null) return false;
    	else if (p == null && q != null) return false;
    	else {
    		if (p.val != q.val) 
    			return false;
    		else return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    	}
    }
}

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    private boolean isSameNode(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 true;
	}
    public boolean isSameTree(TreeNode p, TreeNode q) {
    	if (!isSameNode(p, q)) return false;
    	if (p == null && q == null) return true;
    	
    	LinkedList<TreeNode> left = new LinkedList<TreeNode>();
    	LinkedList<TreeNode> right = new LinkedList<TreeNode>();
    	left.add(p);
    	right.add(q);
    	while (left.size() != 0 && right.size() != 0) {
    		TreeNode ltmp = left.peekFirst();
    		TreeNode rtmp = right.peekFirst();
    		left.removeFirst();
    		right.removeFirst();
    		
    		if (!isSameNode(ltmp.left, rtmp.left)) return false;
    		if (ltmp.left != null && rtmp.left != null) {
    			left.add(ltmp.left);
    			right.add(rtmp.left);
    		}
    		
    		if (!isSameNode(ltmp.right, rtmp.right)) return false;
    		if (ltmp.right != null && rtmp.right != null) {
    			left.add(ltmp.right);
    			right.add(rtmp.right);
    		}
    	}
    	
    	return true;
    }
}



LeetCode Same Tree

标签:

原文地址:http://blog.csdn.net/u011345136/article/details/45287589

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!