在python中使用列表的树表示

ove*_*nge 2 python tree list data-structures

对于这棵树,

在此处输入图片说明

作为初学者,以下是我的列表表示,

tree = [
          [
              [
                 [
                   [], 3, []
                 ], 
                 10,
                 [
                   [], 17, []
                 ]
              ],
              25,
              [
                 [
                   [], 30, []
                 ],
                 32,
                 [
                   [], 38, []
                 ]
              ]
          ],
          40,
          [
             [
               [], 50, []
             ], 
             78,
             [
               [], 93, []
             ]
          ]
       ]
Run Code Online (Sandbox Code Playgroud)

使用python列表这种表示是否正确?

我可以[]在这种表示中避免空列表吗?

ZSO*_*SOR 5

这取决于你所说的“代表”是什么意思。您可以通过将元素放在列表中来表示树,例如 list = [40,25,78,10,32,50,93,3,17,30,38] 然后如果您想重新创建树,则遍历它您可以遍历列表,因为您知道 list[(i+1)*2-1] 的生命孩子和右孩子是 list[(i+1)*2]。

注意:你必须做 i+1,因为第一个元素的索引为 0,而 I 是父节点的索引,例如 25 的索引 +1 是 2,因此 25 的左子节点的索引 +1 是 4。