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

时间:2023-01-17 17:28:40

等价二叉树

题目描述

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

样例
      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;
                }
            }
        }
    }
}