我正试图编写代码来找出二叉树的深度.
我知道必须是rekursiv,提前非常感谢您的回答.
这是我在Kotlin的代码.
sealed class Tree <A>{
abstract fun isEmpty() : Boolean
abstract fun size() : Int
abstract fun depth() : Int
}
private data class Node <A >(
val value : A,
val left : Tree <A>,
val right : Tree <A>
) : Tree <A >() {
override fun isEmpty(): Boolean = false
override fun size(): Int = 1 + left.size() + right.size()
override fun depth(): Int {
if (!left.isEmpty()) // I tried to work with isEmpty()
}
}
private object Empty : Tree < Nothing >() {
override fun isEmpty(): Boolean = true
override fun size(): Int = 0
override fun depth(): Int = 0
}
fun <A> emptyTree () : Tree <A> = Empty as Tree <A>
fun <A> treeNode (
value : A,
left : Tree <A> = emptyTree () ,
right : Tree <A> = emptyTree ()
): Tree <A> = Node (value , left , right )
fun main(){
var tree : Tree<Int> = emptyTree()
tree = treeNode(5,treeNode(3,treeNode(2,treeNode(1)),treeNode(4)),treeNode(8,emptyTree(),treeNode(10)));
我用一棵有7个 node 的树测试了我的代码
println(tree.size())
println(tree.depth())
}