递归函数以显示给定的二叉树

时间:2018-10-16 04:30:34

标签: python

我一直在努力寻找如何在Python中为这个问题编写递归函数的方法

因此,使用Python类脚本中的类和属性给定二叉树定义。

例如下面给出的二叉树:

使用类函数中的node.left_node和node.right_node定义

                          6
       0                                    7
                 3                                    8
            2         5                                        9
         1         4

在这种情况下,我们有

  1. tree.value = 6
  2. tree.left_node.value = 0
  3. tree.left_node.right_node.value = 3
  4. tree.left_node.right_node.left_node.left_node.value = 1

我希望您可以看到上面的二叉树:

我想使用递归功能打印它,如下所示打印出来

________ 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))

1 个答案:

答案 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)