二叉树递归循环 returns None
binaryTree recursion loop returns None
我有一个名为 print_tree_array
的函数,它应该从左到右打印出一个二叉树数组,如下所示:[460, 517, 72, 33, 699, 789, 764, 685, 961, 851]
。它做得很好,直到最后一个循环。然后它只是 return 一个 None
即使我在 else
声明
上做 return array
我已经尝试了很多东西并得出结论,二叉树有效并且 "framework" 设置正确。
class node:
def __init__(self, value=None):
self.value= value
self.r_child=None
self.l_child=None
class tree:
def __init__(self):
self.root=None
def insert(self, value, cur_node):
if(self.root==None):
self.root=node(value)
else:
if(value<cur_node.value):
if(cur_node.l_child==None):
cur_node.l_child=node(value)
else:
self.insert(value, cur_node.l_child)
elif(value>cur_node.value):
if(cur_node.r_child==None):
cur_node.r_child=node(value)
else:
self.insert(value, cur_node.r_child)
def print_tree_array(self, cur_node, array=[]):
if(self.root==None):
return []
else:
if(cur_node!=None):
self.print_tree_array(cur_node.l_child, array)
self.print_tree_array(cur_node.r_child, array)
print(array)
return array.append(cur_node.value)
else:
return array
def get_root(self):
return self.root
def fill_with_random(tree, size, min_range, max_range):
from random import randint
for _ in range(size):
value = randint(min_range, max_range)
print(value)
tree.insert(value, tree.root)
return tree
current_tree = tree()
current_tree = fill_with_random(tree=current_tree, size=10, min_range=0, max_range=999)
print(current_tree.print_tree_array(cur_node=current_tree.root))
708
999
534
79
692
39
904
979
46
568
[]
[46]
[46, 39]
[46, 39, 79]
[46, 39, 79, 568]
[46, 39, 79, 568, 692]
[46, 39, 79, 568, 692, 534]
[46, 39, 79, 568, 692, 534, 979]
[46, 39, 79, 568, 692, 534, 979, 904]
[46, 39, 79, 568, 692, 534, 979, 904, 999]
None
这就是它打印出来的内容,正如您所看到的,它使用第一行打印出来的内容填充了二叉树。然后它继续将树的每个 "end" 漂亮地附加到数组。但它无法附加最右边的项目和 return 整个数组。
array.append 实际上没有 return 任何东西,它只是附加到原始列表
https://www.programiz.com/python-programming/methods/list/append
如果需要,您应该在追加后 return 数组。
我有一个名为 print_tree_array
的函数,它应该从左到右打印出一个二叉树数组,如下所示:[460, 517, 72, 33, 699, 789, 764, 685, 961, 851]
。它做得很好,直到最后一个循环。然后它只是 return 一个 None
即使我在 else
声明
return array
我已经尝试了很多东西并得出结论,二叉树有效并且 "framework" 设置正确。
class node:
def __init__(self, value=None):
self.value= value
self.r_child=None
self.l_child=None
class tree:
def __init__(self):
self.root=None
def insert(self, value, cur_node):
if(self.root==None):
self.root=node(value)
else:
if(value<cur_node.value):
if(cur_node.l_child==None):
cur_node.l_child=node(value)
else:
self.insert(value, cur_node.l_child)
elif(value>cur_node.value):
if(cur_node.r_child==None):
cur_node.r_child=node(value)
else:
self.insert(value, cur_node.r_child)
def print_tree_array(self, cur_node, array=[]):
if(self.root==None):
return []
else:
if(cur_node!=None):
self.print_tree_array(cur_node.l_child, array)
self.print_tree_array(cur_node.r_child, array)
print(array)
return array.append(cur_node.value)
else:
return array
def get_root(self):
return self.root
def fill_with_random(tree, size, min_range, max_range):
from random import randint
for _ in range(size):
value = randint(min_range, max_range)
print(value)
tree.insert(value, tree.root)
return tree
current_tree = tree()
current_tree = fill_with_random(tree=current_tree, size=10, min_range=0, max_range=999)
print(current_tree.print_tree_array(cur_node=current_tree.root))
708
999
534
79
692
39
904
979
46
568
[]
[46]
[46, 39]
[46, 39, 79]
[46, 39, 79, 568]
[46, 39, 79, 568, 692]
[46, 39, 79, 568, 692, 534]
[46, 39, 79, 568, 692, 534, 979]
[46, 39, 79, 568, 692, 534, 979, 904]
[46, 39, 79, 568, 692, 534, 979, 904, 999]
None
这就是它打印出来的内容,正如您所看到的,它使用第一行打印出来的内容填充了二叉树。然后它继续将树的每个 "end" 漂亮地附加到数组。但它无法附加最右边的项目和 return 整个数组。
array.append 实际上没有 return 任何东西,它只是附加到原始列表
https://www.programiz.com/python-programming/methods/list/append
如果需要,您应该在追加后 return 数组。