Sil*_*ter -2 algorithm syntax scala
var m_root : Node = root
private def insert(key: Int, value: Int): Node = {
if(m_root == null) {
m_root = Node(key, value, null, null)
}
var t : Node = m_root
var flag : Int = 1
while (t != null && flag == 1) {
if(key == t.key) {
t
}
else if(key < t.key) {
if(t.left == null) {
t.left = Node(key, value, null, null)
flag = 0
} else {
t = t.left
}
} else {
if(t.right == null) {
t.right = Node(key, value, null, null)
flag = 0
} else {
t = t.right
}
}
}
t
}
Run Code Online (Sandbox Code Playgroud)
我写了迭代版本插入一个节点到二叉搜索树.我想在创建节点时终止,但它不会停止,因为我认为我没有分配终止条件.如何编辑我的代码以在插入节点时终止?
我不确定你想要什么样的行为,但原因很清楚.
你的循环是一种while状态,这将循环,直到t为null.因此,当t非空时,循环将继续.
您只能分配t给非空值 - 实际上您是专门检查null情况并通过创建新节点来停止它.
因此,您需要重新考虑循环条件,或者确保t在某些情况下确实变为空,具体取决于您的实际算法要求.
因为你t在底部返回,我认为while条件是错误的; 唯一可能终止的方法是if此时t为null,所以无论如何返回它都是没有意义的.