我有以下类用于创建二叉树:
class BinaryTree:
def __init__(self):
self._root = None
self._left = None
self._right = None
def root(self):
return self._root
def left(self):
return self._left
def right(self):
return self._right
def isEmpty(self):
return self._root is None
def insert(self, element):
if self.isEmpty():
self._root = element
self._left = BinaryTree()
self._right = BinaryTree()
elif element <= self._root:
self._left.insert(element)
elif element > self._root:
self._right.insert(element)
def inOrder(self):
if self.isEmpty():
return []
l = self._left.inOrder()
l.append(self._root)
l += self._right.inOrder()
return l
def preOrder(self):
if self.isEmpty():
return []
l = [self._root]
l += self._left.preOrder()
l += self._right.preOrder()
return l
def inOrder_iterative(self):
stack = []
res = []
aux = self
while aux or stack:
while aux:
stack.append(aux)
aux = aux._left
if stack:
aux = stack.pop()
res.append(aux._root)
aux = aux._right
return res
当我插入 inorder(2, 3, 4, 5, 6, 7, 8) 的二叉树时,我按顺序得到它,但每个数字前面都有“None”,如下所示:
[None, 2, None, 3, None, 4, None, 5, None, 6, None, 7, None, 8, None]
我需要它输出:
[2, 3, 4, 5, 6, 7, 8]
我似乎找不到代码中的错误是什么。你能帮我一下吗?
谢谢
编辑:
将数据插入树的代码:
tree=BinaryTree()
tree.insert(5)
tree.insert(3)
tree.insert(4)
tree.insert(2)
tree.insert(7)
tree.insert(6)
tree.insert(8)
print('The binary tree is: ')
print('inOrder recursive', tree.inOrder())
print('inOrden iterative', tree.inOrder_iterative())
def iterative_inorder(root):
stack = []
current = root
while current or stack:
while current:
stack.append(current)
current = current.left
if stack:
current = stack.pop()
print(current.data)
current = current.right