[英]How to access an attribute of different class in python
我正在嘗試形成一個二叉搜索樹並打印它。 我收到以下錯誤:
self.root.left.printtree() AttributeError: 'Node' object has no attribute 'printtree'
class Node:
def __init__(self,data):
self.data=data
self.left=None
self.right=None
class Binarysearchtree():
def __init__(self,data):
self.root=Node(data)
def insert(self,data):
if self.root.data>data:
if self.root.left==None:
self.root.left=Node(data)
else:
self.root.left.insert(data)
elif self.root.data<data:
if self.root.right==None:
self.root.right=Node(data)
else:
self.root.right.insert(data)
else:
self.root.data=data
def printtree(self):
if self.root.left:
self.root.left.printtree()
print(self.root.data)
if self.root.right:
self.root.right.printtree()
a=Binarysearchtree(23)
a.insert(20)
a.insert(24)
a.printtree()
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def print_tree(self):
print(self.data)
if self.left:
self.left.print_tree()
if self.right:
self.right.print_tree()
class BinarySearchTree:
def __init__(self, data):
self.root = Node(data)
def insert(self,data):
if self.root.data > data:
if self.root.left is None:
self.root.left = Node(data)
else:
self.root.left.insert(data)
elif self.root.data < data:
if self.root.right is None:
self.root.right = Node(data)
else:
self.root.right.insert(data)
else:
self.root.data = data
def print_tree(self):
self.root.print_tree()
a = BinarySearchTree(23)
a.insert(20)
a.insert(24)
a.print_tree()
您需要將您的print_tree
function 放在Node
class 中。 您還必須更改您的print_tree
function BinarySearchTree
並且您必須使用Node
的print_tree
function
不要忘記尊重snake case
約定
你可以像這樣創建 BST
class Node:
def __init__(self,data):
self.data=data
self.left=None
self.right=None
def createNode(root_node, data):
while(root_node != None):
if data < root_node.data:
if root_node.left == None:
root_node.left = Node(data)
break
else:
root_node = root_node.left
else:
if root_node.right == None:
root_node.right = Node(data)
break
else:
root_node = root_node.right
#In order Traversal
def inOrderTravel(r):
if r == None:
return
inOrderTravel(r.left)
print(r.data)
inOrderTravel(r.right)
class Binarysearchtree:
def __init__(self,data):
self.root = Node(data)
def insert(self,data):
if data < self.root.data:
ref_root = self.root
createNode(ref_root, data)
else:
ref_root = self.root
createNode(ref_root, data)
return self.root
a = Binarysearchtree(23)
r = a.insert(20)
r = a.insert(24)
r = a.insert(25)
r = a.insert(0)
inOrderTravel(r)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.