LintCode2016年8月8日算法比赛----等价二叉树

等价二叉树

题目描述

检查两棵二叉树是否等价。等价意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数据相等。

样例
      1             1
	 / \           / \
	2   2   and   2   2
   /             /
  4             4

这就是两棵等价的二叉树。

   	 1             1
	/ \           / \
   2   3   and   2   3
  /               \
 4                 4
算法分析:
递归遍历两棵二叉树的所有节点,并且判断节点数据是否相同

Java算法解决:

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param a, b, the root of binary trees.
     * @return true if they are identical, or false.
     */
    public boolean isIdentical(TreeNode a, TreeNode b) {
        // Write your code here
        if(a==null&&b==null){
			return true;
		}
		else if(a==null||b==null){
			return false;
		}
		else{
			if(a.val!=b.val){
				return false;
			}
			else{
				boolean result=isIdentical(a.left, b.left);
				if(!result){
					return result;
				}
				else{
					result=isIdentical(a.right, b.right);
					return result;
				}
			}
		}
    }
}
posted on 2016-08-22 15:49  HorseShoe2016  阅读(246)  评论(0编辑  收藏  举报