使用kotlin解决这个问题:100. 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2: 输入:p = [1,2], q = [1,null,2] 输出:false 示例 3: 输入:p = [1,2,1], q = [1,1,2] 输出:false
时间: 2024-01-20 15:02:31 浏览: 103
判断两颗二叉树是否相似的两种方法
5星 · 资源好评率100%
好的,这是一个二叉树的问题,需要判断两棵二叉树是否相同。以下是使用 Kotlin 语言的递归代码实现:
```kotlin
class TreeNode(var `val`: Int) {
var left: TreeNode? = null
var right: TreeNode? = null
}
fun isSameTree(p: TreeNode?, q: TreeNode?): Boolean {
if (p == null && q == null) {
return true
}
if (p == null || q == null) {
return false
}
if (p.`val` != q.`val`) {
return false
}
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
}
```
以上代码中,我们首先创建了一个 TreeNode 类来表示二叉树的节点。然后我们定义了一个名为 `isSameTree` 的函数,它接收两个 TreeNode 类型的参数 `p` 和 `q`,表示两棵二叉树的根节点。函数返回一个布尔值,表示两棵树是否相同。
在函数内部,我们首先判断两个根节点是否都为 null,如果是则返回 true。如果其中一个为 null,另一个不为 null,则返回 false。然后判断两个根节点的值是否相等,如果不相等则返回 false。接着,递归判断两个根节点的左子树和右子树是否相同,如果都相同,则返回 true,否则返回 false。
如果要测试以上代码,可以使用以下代码:
```kotlin
fun main() {
val p = TreeNode(1)
p.left = TreeNode(2)
p.right = TreeNode(3)
val q = TreeNode(1)
q.left = TreeNode(2)
q.right = TreeNode(3)
println(isSameTree(p, q)) // 输出 true
}
```
在测试代码中,我们首先创建了两个二叉树 p 和 q,然后调用 `isSameTree` 函数,并将其结果打印出来。
阅读全文