繁体   English   中英

如何在 python 中表示二叉树?

[英]How can I represent a binary tree in python?

目前我以以下方式表示二叉树:

[None,2,[None,3,None]]

上面的树以 2 为根None表示该分支为空。

我宁愿在列表中实现它。 有没有更好的方法来做到这一点(不诉诸于创建类)?

如果你想表示一个完整的二叉树(即所有节点都有两个孩子,除了叶子),那么你可以只使用一个平面列表来表示树。

您可以像这样轻松确定节点的父亲和两个孩子:

def leftChild(lst,i):
  try: 
    return lst[i*2]
  except IndexError:
    return None

def rightChild(lst,i):
  try: 
    return lst[i*2+1]
  except IndexError:
    return None

def father(lst,i):
  try:
    return lst[i/2]
  except IndexError:
    return None

可以使用平面列表来表示二叉树,如此所述。 这种方法的浪费程度取决于树的形状。

我很好奇你为什么坚持避课。 如果您要将其包装在 class 中,您可以定义一个干净的 API 并对最终用户隐藏您的实现细节。

这是我的方式:一个 arrays 数组,其中索引为 0 的项是根项:

[['Level A', 'A1', 'A2'], ['Level B', 'B1', 'B2'], ['Level C', 'C1', 'C2']]

类可以使简单的应用程序变得不必要地复杂,尤其是当您处理如上所示的简单树时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM