Python 列表索引超出范围-BST的预顺序遍历
我正在尝试对以数组形式获得的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):
[“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那么有两个问题
阵列是基于零的:
如果indind“为了使最后一个节点(在本例中为4个节点)显示无错误,我需要更改什么?”那么,用您自己的话来说,为什么这个节点会出现错误,而其他节点不会出现错误?提示:在这种情况下,将为索引计算什么值?它在射程内吗?在其他情况下,计算出的指数在范围内有意义吗?这是绝对正确的。我举的例子是错误的!!非常感谢,现在就修好了
if ind < len(arr) and arr[ind] != '#':
traverse(["5","2","6","1","9","#","8","#","#","#","#","#","#","4","#"])