当前位置: 首页 > 面试题库 >

在python中逐级打印二叉树

弓泰
2023-03-14
问题内容

我想以以下方式打印我的二叉树:

                   10

               6        12

             5   7    11  13

我已经编写了用于插入节点的代码,但是无法编写用于打印树的代码。所以请帮忙。我的代码是:

class Node:
    def __init__(self,data):
       self.data=data
       self.left=None
       self.right=None
       self.parent=None

class binarytree:
   def __init__(self):
     self.root=None
     self.size=0

   def insert(self,data):
     if self.root==None:
        self.root=Node(data)

    else:
        current=self.root
        while 1:
            if data < current.data:
                if current.left:
                    current=current.left
                else:
                    new=Node(data)
                    current.left=new
                    break;
            elif data > current.data:
                if current.right:
                    current=current.right
                else:
                    new=Node(data)
                    current.right=new
                    break;
            else:
                break



 b=binarytree()

问题答案:

您正在寻找的是广度优先遍历,它使您可以逐级遍历树。基本上,您使用队列来跟踪需要访问的节点,并在运行时将孩子添加到队列的 后面 (而不是将它们添加到堆栈的
前面 )。首先开始工作。

完成此操作后,您可以找出树具有(log2(node_count) + 1)的级别,并使用该级别来估计空白。如果要使空白完全正确,则可以使用其他数据结构来跟踪每个级别需要多少空间。不过,使用节点和级别数的智能估算应该足够了。



 类似资料:
  • 下面是一个二叉查找树,它有一个根节点、一个左节点和一个右节点。代码有效,但我想显示这个二叉查找树,这样我就可以看到图层中的每个节点…这是代码…

  • 问题内容: 这是一个面试问题 我想到一个解决方案。它使用队列。 有什么能比这更好的解决方案了吗? 问题答案: 逐级遍历称为广度优先遍历。使用队列是执行此操作的正确方法。如果要进行深度优先遍历,则可以使用堆栈。 您拥有它的方式并不是很标准。这应该是这样。 编辑 这是起作用的算法。假设您有一棵这样的树: 首先,将根(1)排队。然后进入循环。队列(1)中的第一项出队并打印。1的孩子从左到右入队,队列现在

  • 我一直在尝试从Node切换到Java,我想知道的一件事是如何以类似于Node显示的格式打印对象,例如二叉树。例如,我的二叉树初始化代码如下: 在节点中,此二叉树将显示如下: 然而在Java,当我做system.out.println(树); 输出->BinaryTree@4554617c 什么是打印我的BinaryTree的正确方法?什么是好方法?有没有一种方法可以用JSON格式打印树?

  • 问题内容: 这是字典 使用这个 它打印以下内容: 但是我希望程序像这样打印它: 我刚刚开始学习字典,所以不确定如何执行此操作。 问题答案: 输出:

  • 这是本字典 将此 它打印以下内容: 但我想让程序像这样打印: 我刚开始学字典,所以我不知道怎么做。

  • 我必须使用层次顺序遍历打印二叉树的节点,但以螺旋形式,即不同层次的节点应该以螺旋形式打印。 例如:如果树看起来像: 输出应为 10 5 20 25 15 6 4。 我使用的算法很简单,只是级别顺序遍历的一个小变化。我只是取了一个变量p.if变量等于1,而不是从左到右打印给定级别的顺序,如果是-1,则从右到左打印。 我得到了答案,但在歪斜树的情况下,最坏的情况复杂度可能是O(n^2)。 这个任务能有