same tree java_LeetCode算法题-Same Tree(Java实现)

这是悦乐书的第162次更新,第164篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第21题(顺位题号是100)。给定两个二叉树,编写一个函数来检查它们是否相同。如果两个二叉树在结构上相同并且节点具有相同的值,则认为它们是相的。例如:

输入: 1 1

/ \ / \

2 3 2 3

[1,2,3],[1,2,3]

输出:true

输入:1 1

/ \

2 2

[1,2],[1,null,2]

输出:false

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 分析与解题

如果两个二叉树相同,那么两个二叉树的节点值肯定都要相同。从根节点一直到最后一个子节点,出现一个不相同的值,那么两个二叉树就不是相同的。当一个二叉树从根节点、左子节点、右子节点依次向下延伸的时候,每次获取到他们的值,然后再进行比较,如果相同,则继续找下一点节点进行比较,直到所有节点比较完。

每次进入下一个循环判断的时候,当前节点都是一个新的二叉树,可能是根节点,也可能是拥有子节点,所以我们可以借助递归的方法来解题。

public boolean isSameTree(TreeNode p, TreeNode q) {

if (p == null || q == null) {

return p == q;

}

boolean f = p.val == q.val;

boolean f2 = isSameTree(p.left, q.left);

boolean f3 = isSameTree(p.right, q.right);

return f && f2 && f3;

}

03 小结

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

你可能感兴趣的:(same,tree,java)