二叉树的前序遍历Kotlin实现
时间: 2023-05-22 22:03:36 浏览: 193
当然可以。以下是一个二叉树的前序遍历的 Kotlin 实现:
```
class Node(var value: Int, var left: Node? = null, var right: Node? = null)
fun preorderTraversal(root: Node?): List<Int> {
if (root == null) return listOf()
val result = mutableListOf<Int>()
val stack = mutableListOf<Node>()
stack.add(root)
while (stack.isNotEmpty()) {
val node = stack.removeAt(stack.size - 1)
result.add(node.value)
node.right?.let { stack.add(it) }
node.left?.let { stack.add(it) }
}
return result
}
```
这是一个迭代实现,它使用了一个栈来模拟递归,效率比递归实现高一些。
相关问题
用kotlin写一段代码,实现二叉树的遍历
好的,以下是使用Kotlin实现二叉树的三种遍历方式:前序遍历、中序遍历、后序遍历的代码:
```kotlin
data class TreeNode(val value: Int, var left: TreeNode? = null, var right: TreeNode? = null)
// 前序遍历
fun preOrderTraversal(root: TreeNode?) {
if (root == null) return
print("${root.value} ")
preOrderTraversal(root.left)
preOrderTraversal(root.right)
}
// 中序遍历
fun inOrderTraversal(root: TreeNode?) {
if (root == null) return
inOrderTraversal(root.left)
print("${root.value} ")
inOrderTraversal(root.right)
}
// 后序遍历
fun postOrderTraversal(root: TreeNode?) {
if (root == null) return
postOrderTraversal(root.left)
postOrderTraversal(root.right)
print("${root.value} ")
}
```
使用方法:
```kotlin
// 构造一颗二叉树
val root = TreeNode(1).apply {
left = TreeNode(2).apply {
left = TreeNode(4)
right = TreeNode(5)
}
right = TreeNode(3).apply {
left = TreeNode(6)
right = TreeNode(7)
}
}
// 前序遍历:1 2 4 5 3 6 7
preOrderTraversal(root)
// 中序遍历:4 2 5 1 6 3 7
inOrderTraversal(root)
// 后序遍历:4 5 2 6 7 3 1
postOrderTraversal(root)
```
这段代码中,我们使用了 `data class` 定义了树节点的结构,然后实现了三种不同的遍历方式。遍历时,我们先判断当前节点是否为空,如果不为空,就按照遍历顺序打印当前节点的值,并递归遍历左右子树。
阅读全文