程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在平衡二叉搜索树 Ruby 中返回 Level-1 节点?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在平衡二叉搜索树 Ruby 中返回 Level-1 节点??

开发过程中遇到在平衡二叉搜索树 Ruby 中返回 Level-1 节点?的问题如何解决?下面主要结合日常开发的经验,给出你关于在平衡二叉搜索树 Ruby 中返回 Level-1 节点?的解决方法建议,希望对你解决在平衡二叉搜索树 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,请注明来意。