我一直在努力寻找如何在Python中为这个问题编写递归函数的方法
因此,使用Python类脚本中的类和属性给定二叉树定义。
例如下面给出的二叉树:
使用类函数中的node.left_node和node.right_node定义
6
0 7
3 8
2 5 9
1 4
在这种情况下,我们有
我希望您可以看到上面的二叉树:
我想使用递归功能打印它,如下所示打印出来
________ 1 ___ 4
_________ 2 ___ 5 _______________ 9
___________ 3 _______________ 8
_______ 0 _______________ 7
_______________ 6
使用下划线将它们定位在二叉树的正确位置。
不确定我是否应该做下面的事情,这是完全错误的。
def print_growing_up(tree):
tree_height = tree.height()
total_length = 2 ** ( tree_height + 1 ) - 1
_print_tree(tree, 0, tree_height, int((total_length-1)/2))
def _print_tree(node, level, height, spaces):
if level > height:
return
if node.value is None:
return
else:
_print_tree(node.left_node, level + 1, height, int((spaces-1)/2 ))
_print_tree(node.right_node, level + 1, height, int(((spaces+1)/2)+spaces))
print(spaces)
print('_' * spaces + str(node.value))
答案 0 :(得分:0)
您要实现的目标称为后顺序树遍历,首先遍历左子级,然后遍历右子级,然后遍历根。
def print_post_order(root):
#If the root exists on the tree
if root:
print_post_order(root.left)
print_post_order(root.right)
print(root.val)