100.相同的数

题目#100.相同的数

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

示例 1:

示例 1

示例 2:

示例 2

示例 3:

示例 3

题目分析

判断两个树是否相同,只需要判断根节点是否值相同,左右子节点是否相同即可,而左右子节点可以使用递归的形式进行判断,所以代码如下:

代码

fun isSameTree(p: TreeNode?, q: TreeNode?): Boolean {
    if (p == null && q == null) return true
    if (p == null || q == null) return false
    return p.`val` == q.`val` && isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
}

代码分析

对于判断两个树是否相同,有三种情况可以分情况讨论。

  • 两个树同时为空,则两个树相同if (p == null && q == null) return true
  • 两个树有且仅有一个为空,则两个树不同if (p == null || q == null) return false
  • 否则判断根节点值以及左右子树return p.`val` == q.`val` && isSameTree(p.left, q.left) && isSameTree(p.right, q.right)

你可能感兴趣的:(100.相同的数)