vlambda博客
学习文章列表

给定两棵二叉树,检查它们是否是相同的二叉树





概述
给定两棵二叉树,写一个函数来检查它们是否是相同的二叉树。 如果两个 二叉树在结构上相同且节点具有相同的值,则它们被认为是相同的。





Example 
示例来自LeetCode,示例1返回true,示例2和示例3返回false。







JAVA 代码实现
示例中只演示第一种树结构的形式,其余示例读者自行构造树结构即可。

package cn.lspj.ch1.base;

public class CheckSameTree {

public static 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);
return false;
}

static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

public static void main(String[] args) {
TreeNode pRoot = new TreeNode(1);
TreeNode pLeft = new TreeNode(2);
TreeNode pRight = new TreeNode(3);
pRoot.left = pLeft;
pRoot.right = pRight;

TreeNode qRoot = new TreeNode(1);
TreeNode qLeft = new TreeNode(2);
TreeNode qRight = new TreeNode(3);
qRoot.left = qLeft;
qRoot.right = qRight;
System.out.println(isSameTree(pRoot,qRoot));
}

}