【发布时间】:2021-07-16 09:23:02
【问题描述】:
我正在尝试为二叉搜索树编写递归插入方法,但不断收到 stack level too deep 是怎么回事,它一直给我错误?
我的节点类
class Node
attr_accessor :value, :left, :right
def initialize(value)
@value = value
left = nil
right = nil
end
end
二叉搜索树类
class Bst
attr_accessor :root, :size
def initialize
@root = nil
@size = 0
end
def insert(value, root=nil)
if @root == nil
@root = Node.new(value)
end
if value < @root.value
if @root.left == nil
@root.left = Node.new(value)
else
return insert(value, @root.left)
end
return root
end
if value > @root.value
if @root.right == nil
@root.right = Node.new(value)
else
return insert(value, @root.right)
end
end
return root
end
一旦我尝试将 4 添加到树中,就会发生这种情况
tree = Bst.new
tree.insert(10)
tree.insert(6)
tree.insert(19)
tree.insert(4)
【问题讨论】: