[leetcode]Same Tree (比较两棵二叉树是否相同)

2014-11-24 07:16:18 · 作者: · 浏览: 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;
        }
        if(p==null&&q!=null||q==null&&p!=null||p.val!=q.val){
            return false;
        }
        return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
    }
}
思路是依次比较两棵树上左子树的各个节点的值时候相同,然后再比较右子树。对于二叉树的遍历中的递归思想,可以参见我之前写的两篇文章。《一段代码让你理解二叉树的递归奥秘》和《二叉树的递归遍历以及最大深度的求解( Java)》