Python 为什么我的参数/对象显示为非类型对象?
我在自学二进制搜索树,在这个程序中,我在树中插入数据,但错误Python 为什么我的参数/对象显示为非类型对象?,python,binary-search-tree,control-flow,Python,Binary Search Tree,Control Flow,我在自学二进制搜索树,在这个程序中,我在树中插入数据,但错误'NoneType'对象没有属性“data”错误正在发生 from collections import deque class Node: def __init__(self, data): self.data = data self.left = None self.right = None def insert(rnode, data): if data >
'NoneType'对象没有属性“data”
错误正在发生
from collections import deque
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def insert(rnode, data):
if data > rnode.data:
insert(rnode.right, data)
rnode.right.data = data
return print('Node inserted')
if data < rnode.data:
insert(rnode.left, data)
rnode.left.data = data
return print('Node inserted')
def bfs():
q = deque()
temp = self.root
while temp:
print(temp.data)
q.append(temp.left)
q.append(temp.right)
temp = q.popleft()
root = Node(8)
insert(root, 3)
bfs()
从集合导入数据
类节点:
定义初始化(自身,数据):
self.data=数据
self.left=无
self.right=无
def插入(rnode,数据):
如果数据>rnode.data:
插入(rnode.right,数据)
rnode.right.data=数据
返回打印('插入节点')
如果数据
错误:
Exception has occurred: AttributeError
'NoneType' object has no attribute 'data'
File "/home/mayank/Documents/datastructures/binarysearchtree.py", line 9, in insert
if data > rnode.data:
File "/home/mayank/Documents/datastructures/binarysearchtree.py", line 14, in insert
insert(rnode.left, data)
File "/home/mayank/Documents/datastructures/binarysearchtree.py", line 29, in <module>
insert(root, 3)
发生异常:AttributeError
“非类型”对象没有属性“数据”
文件“/home/mayank/Documents/datastructures/binarysearchtree.py”,第9行,插入
如果数据>rnode.data:
文件“/home/mayank/Documents/datastructures/binarysearchtree.py”,插入部分第14行
插入(rnode.left,数据)
文件“/home/mayank/Documents/datastructures/binarysearchtree.py”,第29行,在
插入(根,3)
救命 您的
insert
函数假定rnode.right
和rnode.left
总是指一个可以插入值的树,但如果rnode
是一个叶子(插入新值时它最终将是叶子),则情况并非如此。insert
需要为新值创建一个新节点
def insert(rnode, data):
if data > rnode.data:
if rnode.right is None:
rnode.right = Node(data)
else:
insert(rnode.right, data)
if data < rnode.data:
if rnode.left is None:
rnode.left = Node(data)
else:
insert(rnode.left, data)
def插入(rnode,数据):
如果数据>rnode.data:
如果rnode.right为无:
rnode.right=节点(数据)
其他:
插入(rnode.right,数据)
如果数据
您的insert
函数假定rnode.right
和rnode.left
总是指一个可以插入值的树,但如果rnode
是一个叶子(插入新值时,它最终将是叶子),则情况并非如此insert
需要为新值创建一个新节点
def insert(rnode, data):
if data > rnode.data:
if rnode.right is None:
rnode.right = Node(data)
else:
insert(rnode.right, data)
if data < rnode.data:
if rnode.left is None:
rnode.left = Node(data)
else:
insert(rnode.left, data)
def插入(rnode,数据):
如果数据>rnode.data:
如果rnode.right为无:
rnode.right=节点(数据)
其他:
插入(rnode.right,数据)
如果数据