我正在嘗試撰寫代碼來查找二叉樹的深度。
我知道它需要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 個節點的樹測驗了我的代碼
println(tree.size())
println(tree.depth())
}
uj5u.com熱心網友回復:
嘗試以與 size 相同的方式進行操作:節點的深度是 1 加上 left.depth() 和 right.depth() 中的最大值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486468.html
