【发布时间】:2019-10-28 15:26:31
【问题描述】:
我正在编写用于从列表 L 在 Python 中创建二叉搜索树的标准代码。其想法是递归地以格式(数据、left_subtree、right_subtree)打印树。它适用于每个列表,但是当我使用 L=range(n) 时,它不包括第一个元素。
例如当我这样做时:
输入:
L=[3, 8, 1, 13, 5, 9]输出:
(3, (1, None, None), (8, (5, None, None), (13, (9, None, None), None))))
但是当我这样做时:
输入:
L=range(4) #L=[0,1,2,3]输出:
(1,None,(2,None,(3,None,None)))
0 去哪儿了?
应该是:
输入:
L=range(4) #L=[0,1,2,3]输出:
(0,None,(1,None,(2,None,(3,None,None))))
这是我的代码:
class Nodo:
def __init__(self, num):
self.left = None
self.right = None
self.num = num
def insert(self, num):
if self.num:
if num < self.num:
if self.left is None:
self.left= Nodo(num)
else:
self.left.insert(num)
elif num > self.num:
if self.right is None:
self.right = Nodo(num)
else:
self.right .insert(num)
else:
self.num = num
def Print(self,nodo):
if nodo:
return "("+str(nodo.num)+","+self.Print(nodo.left)+","+self.Print(nodo.right )+")"
else:
return "None"
def binary_tree(L):
if len(L)>0:
raiz = Nodo(L[0])
for i in range(1,len(L)):
raiz.insert(L[i])
return raiz.Print(raiz)
else:
return "None"
print(binary_tree(range(4)))
【问题讨论】:
标签: python recursion binary-search-tree