我下面有我的代码,我正在从链表中读取数据并从中创建二叉树。我在这里使用一个列表(q)并将self.top附加到它。当我打印时它的价值给了我一些地址。
我不知道那个地址是什么?
接下来,当我弹出队列并将其分配给父级并打印parent.root时,它会打印出值。如何在这里工作?
class createnode:
def __init__(self,val):
self.data=val
self.next=None ##Creation of Node in link list
class createbinarytree:
def __init__(self,data):
self.root=data
self.left=None
self.right=None ##Creation of binary tree nodes
class createlist:
def __init__(self, data = None):
self.head = None
self.top = None
def push(self,val):
node=createnode(val)
if self.head is None:
self.head=node
else:
node.next=self.head ##Pushing the node to a link list
self.head=node
def convertedtree(self):
q=[]
if self.head is None: ##Function to convert link list to binary tree
self.top = None
return
self.top=createbinarytree(self.head.data)
q.append(self.top) ##Printing q here gives some kind off address
self.head=self.head.next
while(self.head):
self.parent=q.pop(0)
self.Leftchild=None
self.Rightchild=None
self.Leftchild=createbinarytree(self.head.data)
q.append(self.Leftchild)
self.head=self.head.next
if(self.head ):
self.Rightchild=createbinarytree(self.head.data)
q.append(self.Rightchild)
self.head=self.head.next
self.parent.left=self.Leftchild
self.parent.right=self.Rightchild
def printlist(self):
temp=self.head
while(temp):
print(temp.data)
temp=temp.next
conv=createlist();
conv.push(10)
conv.push(20)
conv.push(30)
conv.printlist()
conv.convertedtree()
答案 0 :(得分:0)
您正在打印列表。如果这个列表是["这","是"," a","列表","", "字符串"]然后你会看到你期望的。但因为它是一个类对象列表,它必须以某种方式打印它们。因此,它默认打印类的名称和实例的地址。
你可能应该有"打印q"在代码中,因为那是你要问的。我补充说,每次q改变后,都得到了这个:
30
20
10
[]
[<__main__.createbinarytree instance at 0x02CB9A58>]
[]
[<__main__.createbinarytree instance at 0x02CB9A30>]
[<__main__.createbinarytree instance at 0x02CB9A30>, <__main__.createbinarytree instance at 0x02CB9A08>]
如果您的类提供了转换为字符串的方法,那么您可以使其打印更有用的信息。见What is the purpose of __str__ and __repr__ in Python?
class createbinarytree:
def __init__(self,data):
self.root=data
self.left=None
self.right=None ##Creation of binary tree nodes
def __repr__(self):
return "<Node value=" + str(self.root) + ">"
然后我得到像这样的输出
30
20
10
[]
[<Node value=30>]
[]
[<Node value=20>]
[<Node value=20>, <Node value=10>]