关于用Python编写此二叉树

关于用Python编写此二叉树,python,binary-tree,Python,Binary Tree,我有一个关于编码一棵二叉树的问题,我现在正陷在这个问题上 基本上,算法如下,在初始节点处,我们有以下对象:1,2,3,按(无,2,3)的顺序排列,对象3>对象2>对象1。在树的每个阶段中,如果正在移动的对象小于放置在当前位置的对象,则一个对象可以移动到其紧邻的右侧或左侧,并与另一个对象一起放置。如果紧邻右侧或左侧的位置具有None位置,则只有最小的数字可以从右侧或左侧位置移动。例如,可以在初始节点之后有(无,0,2+3)和(无,1+2,3)的事件 因此,该树如下所示: 我想知道如何用Python

我有一个关于编码一棵二叉树的问题,我现在正陷在这个问题上

基本上,算法如下,在初始节点处,我们有以下对象:1,2,3,按
(无,2,3)
的顺序排列,对象3>对象2>对象1。在树的每个阶段中,如果正在移动的对象小于放置在当前位置的对象,则一个对象可以移动到其紧邻的右侧或左侧,并与另一个对象一起放置。如果紧邻右侧或左侧的位置具有
None
位置,则只有最小的数字可以从右侧或左侧位置移动。例如,可以在初始节点之后有
(无,0,2+3)
(无,1+2,3)
的事件

因此,该树如下所示:

我想知道如何用Python编写这个代码。我并不真正关心复制事件,因此在每一点上,我只对发生的唯一元组/事件感兴趣

我不确定,但我有一个大致的想法是:

def recursion():
    pos = list(range(1,4))
    index = 0
    values = list(range(1,4))
    tree = []
    if pos[index+1] > pos[index]:
        pos[index + 1] -=  pos[index+1]
        pos[index + 2] += pos[index+1]
        tree.append(pos)
    if pos[index+1] < pos[index]:
        pos[index+1] += pos[index]
        pos[index] -= pos[index]
        tree.append(pos)
    else:
        recursion()
    return tree
def递归():
位置=列表(范围(1,4))
索引=0
值=列表(范围(1,4))
树=[]
如果pos[index+1]>pos[index]:
位置[索引+1]-=位置[索引+1]
pos[index+2]+=pos[index+1]
树追加(pos)
如果pos[index+1]

任何帮助都将不胜感激。

请更好地解释移动规则。“当前位置”——物体移动到的位置——到底是什么?
(1,0,2+3)
如何变成
(1,2,3)
?两个项目向左移动,但它不小于该位置的项目(
0
)?还有其他值得怀疑的举措。(1)这一过程如何结束?在我看来,这就像一个带循环的有向图,而不是二叉树。(2) 您对
0
的使用似乎不正确;这应该是
None
?在一种情况下,您将
1
移动到
0
,这违反了您的“较小”移动规则。(3) 根据您给出的规则,这不是一个二叉树;某些配置允许2次以上的移动。您从给定的代码中得到了什么结果?您对这种格式有什么期望?我不知道你的树结构是如何工作的:没有节点对象——没有任何结构可用于操纵树。@RoryDaulton我编辑了这篇文章,最初我省略了0的情况,如果它是0,最小的数字可能会移动。我已将0更改为
None
,这样它会更安全clear@Prune我按照您的建议将其更改为
None
,以便将其排除在“较小”移动规则之外。我希望得到的只是能够看到任意阶段事件的总可能组合。我对任何结构都很灵活,但对我来说,使用二叉树更直观。你能解释一下如何使用有向图吗?