小编com*_*xer的帖子

从列表中创建完整的二叉搜索树

我正在尝试制作一个算法,在给定值列表的情况下创建一个完整的二叉搜索树.完成,因为所有级别都是完整的,除了可能是最后一级,它需要尽可能向左移动所有元素.

我已经实现了一些(在Python中)将创建一个平衡的BST,如下所示:

# TreeNode constructor takes (data, left, right, parent)
def make_tree(arr, parent):
    if not arr:
        return None

    length = len(arr)
    if length == 1:
        return TreeNode(arr[0], None, None, parent)
    else:
        mid = int(len(arr)/2)
        mid_node = TreeNode(arr[mid], None, None, parent)
        mid_node.left = make_tree(arr[0:mid], mid_node)
        mid_node.right = make_tree(arr[mid+1:length], mid_node)
        return mid_node
Run Code Online (Sandbox Code Playgroud)

它通过递归地按中点分割列表,并使中点成为父节点.

但是,这不会创建完整的 BST.鉴于列表[2,4,7,8,10],它将创建:

      7

   /    \ 

  4     10

/       /

2      8
Run Code Online (Sandbox Code Playgroud)

但是完整的BST看起来像这样:

      8

   /    \ 

  4     10

 /  \ 

2    7 
Run Code Online (Sandbox Code Playgroud)

您对如何修改我的方法来完成此任务有什么建议吗?

python algorithm binary-search-tree

8
推荐指数
1
解决办法
4709
查看次数

在Python中生成括号模型列表的算法

我正在尝试创建一个简单的递归函数,它将在Python中生成嵌套列表的列表.最终结果将代表单个淘汰赛锦标赛.我希望创建这样的列表可以让我轻松生成我需要的东西.这将在以后用于为锦标赛比赛创建模型.

所以,如果有4名参赛者的锦标赛:

[[1,4],[2,3]]
Run Code Online (Sandbox Code Playgroud)

7名参赛者的比赛:

[[1,[4,5]],[[2,7],[3,6]]]
Run Code Online (Sandbox Code Playgroud)

或者是8名参赛者的比赛:

[[[1,8],[4,5]],[[2,7],[3,6]]]
Run Code Online (Sandbox Code Playgroud)

我还没有算法类(我希望课程最终会帮助这样的事情)所以我不完全确定如何解决这个问题.以下是我到目前为止的尝试.

def decide_rounds(list_to_fill, player_nums):
    if len(player_nums) < 3:
        for num in player_nums:
            list_to_fill.append(num)
        return

    left = []
    decide_rounds(left, ??????) #Tried passing various things to these with no avail.
    list_to_fill.append(left)
    right = []
    decide_rounds(right, ???????)
    list_to_fill.append(right)
Run Code Online (Sandbox Code Playgroud)

任何有关如何处理此问题的帮助或解释将不胜感激!

编辑:目前我正在调用这样的函数:

rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds
Run Code Online (Sandbox Code Playgroud)

python algorithm

7
推荐指数
1
解决办法
3781
查看次数

获取传递给Dart函数/构造函数调用的参数集合

我本质上是在寻找JavaScriptarguments功能,但在Dart中.

这在Dart有可能吗?

dart

4
推荐指数
1
解决办法
597
查看次数

标签 统计

algorithm ×2

python ×2

binary-search-tree ×1

dart ×1