1.题目
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例:
输入: 1 1/ \ / \2 3 2 3[1,2,3], [1,2,3]输出: true输入: 1 1/ \2 2[1,2], [1,null,2]输出: false输入: 1 1/ \ / \2 1 1 2[1,2,1], [1,1,2]输出: false
2.思路
要比较二叉树的结构与节点是否完全相同,我们先看给定二叉树的实现:
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) {this.val = val;}TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}}
我们可以看出来,左节点与右节点也是一颗树,那么我们这里使用递归比较当前节点的值即可
首先我们判断边界值:当p、q都为null时,我们认为该树也是相同的
public boolean isSameTree(TreeNode p, TreeNode q) {if(p == null && q == null){return true;}if (p != null && q != null && p.val == q.val){return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);}else {return false;}}
