python二进制树递归

问题描述 投票:-2回答:1
class Node:
    def __init__(self,value):
        self.value = value 
        self.right = None
        self.left = None

class Tree:
    def __init__(self,root):
        self.root = Node(root) 

    def print_tree(self):
        return self.preorder_print(self.root,"")

    def preorder_print(self,start,traversal):
        if start:
            print('step 1')
            traversal = self.preorder_print(start.left, traversal)
            print('step 2')
            traversal +=(str(start.value)+"-")
            print('step 3')
            traversal = self.preorder_print(start.right, traversal)
        return traversal


"""
             F
        B         G
    A      D        I
        C    E   H 

In- order print: A->B->C->D->E->F->G->H->I
"""


tree = Tree("F")
tree.root.left = Node("B")
tree.root.right = Node("G")
tree.root.right.right = Node("I")
tree.root.right.right.left = Node("H")

tree.root.left.left = Node("A")
tree.root.left.right = Node("D")
tree.root.left.right.left = Node("C")
tree.root.left.right.right = Node("E")
print(tree.print_tree())
  1. 我无法可视化preorder_print函数
  2. 我知道'第一步'递归向左最深处A,但是到达A后,递归应该停止。
  3. 我的问题是函子如何脱离该递归?在“步骤1”中该遍历的返回值是多少?
python recursion binary-tree
1个回答
0
投票
  1. 是的,有很多程序员无法可视化递归。
  2. 是,当递归达到Node A时,递归确实有所帮助。
  3. [if start:语句中的函数突破了递归(基本情况)。

顺便说一下,您发布的代码将输出以下内容:A-B-C-D-E-F-G-H-I-

© www.soinside.com 2019 - 2024. All rights reserved.