繁体   English   中英

打印二叉树

[英]Printing a binary tree

我刚刚开始使用Python编写类,遇到了一个障碍,试图打印我创建的二叉树。 这是我的代码:

class Node(object):
    def __init__(self, number):
        self.number=number
        self.right=None
        self.lef=None

    def add_node(self,number):
        if number < self.number:
            self.left = self.left.add_node(number)
        if number > self.number:
            self.right = self.right.add_node(number)

第一部分代表树的根,add_node函数在树中添加一个节点。 我为树的根创建了一个新实例:

树=节点(6)

我面临的问题是打印树。 如果我只是说print Tree ,我会得到:

<__main__.Node object at 0x10f6e5210>

有人告诉我,我必须创建一个函数才能实际打印树,该函数看起来像正在创建新节点的函数,但到目前为止我还无法做到这一点。 有什么帮助吗?

您可以添加__str__方法来确定您的节点对象用作字符串时的反应,即str(Node(6)) 如果您想在打印语句等中给出字符串表示形式而无需直接调用方法,则这很有用。

class Node(object):
    def __init__(self, number):
        self.number=number
        self.right=None
        self.lef=None

    def add_node(self,number):
        if number < self.number:
            self.left = self.left.add_node(number)
        if number > self.number:
            self.right = self.right.add_node(number)

    def __str__(self):
        return str(self.number)

print Node(6)

编辑:

__str__()返回字节,而__unicode__()返回字符。 __unicode__()实际上应该更换__str__()所以它实际上是推荐使用__unicode__()而不是(在Python 2.x的还有两对兼容性的原因)。

表示对象的第三种方法是__repr__() ,它用于非正式形式的字符串表示形式,而用于调试等。返回的字符串应看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象。

有关更多信息,请参见语言参考

是的,您需要添加一个函数来创建一个函数以在节点上print该值。 该功能可以很简单

def dis(self):
    print(self.number)

现在您可以使用

print (Tree.disp())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM