Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表索引超出范围-BST的预顺序遍历_Python_Algorithm_Tree_Binary Search Tree_Traversal - Fatal编程技术网

Python 列表索引超出范围-BST的预顺序遍历

Python 列表索引超出范围-BST的预顺序遍历,python,algorithm,tree,binary-search-tree,traversal,Python,Algorithm,Tree,Binary Search Tree,Traversal,我正在尝试对以数组形式获得的BST进行预排序遍历: 输入示例: [“5”、“2”、“6”、“1”、“9”、“#”、“8”、“8”、“#”、“#”、“#”、“#”、“4”、“#”]其中#是树中缺少的节点 我的输出应该是预顺序遍历的结果: 52119684 到目前为止,我已经成功了,除了最后一个节点,我得到了超出范围的索引。 以下是我目前的代码: def traverse(strArr): strArr.insert(0, '#') def preorder(arr, ind):

我正在尝试对以数组形式获得的BST进行预排序遍历:

输入示例:
[“5”、“2”、“6”、“1”、“9”、“#”、“8”、“8”、“#”、“#”、“#”、“#”、“4”、“#”]
其中
#
是树中缺少的节点

我的输出应该是预顺序遍历的结果:

52119684

到目前为止,我已经成功了,除了最后一个节点,我得到了超出范围的索引。 以下是我目前的代码:

 def traverse(strArr):
  strArr.insert(0, '#')

  def preorder(arr, ind):
    if ind <= len(arr) and arr[ind] != '#':
      print(arr[ind])
      preorder(arr, 2*ind)
      preorder(arr, 2*ind+1)

  preorder(strArr, 1)

traverse(["5","2","6","1","9","#","8","#","#","#","#","4","#"])
def遍历(strArr):
strArr.insert(0,#'))
def预订单(arr,ind):

如果ind那么有两个问题

  • 阵列是基于零的:
    如果ind
    ind“为了使最后一个节点(在本例中为4个节点)显示无错误,我需要更改什么?”那么,用您自己的话来说,为什么这个节点会出现错误,而其他节点不会出现错误?提示:在这种情况下,将为索引计算什么值?它在射程内吗?在其他情况下,计算出的指数在范围内有意义吗?这是绝对正确的。我举的例子是错误的!!非常感谢,现在就修好了
    
    if ind < len(arr) and arr[ind] != '#':
    
    traverse(["5","2","6","1","9","#","8","#","#","#","#","#","#","4","#"])