大佬教程收集整理的这篇文章主要介绍了在平衡二叉搜索树 Ruby 中返回 Level-1 节点?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用排序数组在 Ruby 中递归创建平衡二叉搜索树。但是,我在结束返回值时遇到了问题。不是所有的节点冒泡起来,创建一棵树并返回基本的 1 级节点,而是返回树底部的最后一个节点。
似乎正在创建的节点根本没有链接在一起(使用 p List
打印实例化的类只会返回最后一个节点)。如何将节点链接在一起并返回 1 级根节点?
class Node
include Comparable
attr_accessor :value,:left,:right
def initialize(value,left = nil,right = nil)
@value = value
@left = left
@right = right
end
end
class Tree
attr_accessor :sorted_arr,:arr
def initialize(arr)
@arr = arr
@sorted_arr = arr.sort.uniq
end
#Problem: nodes not being linked together
def build_tree(arr,start,last)
if start > last
return nil
end
mID_index = (start + last) / 2
@root = Node.new(arr[mID_index])
@root.left = build_tree(arr,mID_index - 1)
@root.right = build_tree(arr,mID_index + 1,last)
return @root
end
end
List = Tree.new([1,7,4,23,8,9,3,6,67,6345,324])
List.build_tree(List.sorted_arr,List.sorted_arr.length-1)
p List
您应该使用 root
而不是 @root
。
以 @
开头的那些是实例变量,所以当你调用:
@root.left = build_tree(arr,start,mid_index - 1)
在该 build_tree
调用中,最终您还将调用 @root = Node.new(arr[mid_index])
,它将替换已在父调用中设置的值。
以上是大佬教程为你收集整理的在平衡二叉搜索树 Ruby 中返回 Level-1 节点?全部内容,希望文章能够帮你解决在平衡二叉搜索树 Ruby 中返回 Level-1 节点?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。