[英]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.