在python中的简单二叉树

时间:2015-10-22 23:05:55

标签: python

所以我使用二叉树类来构建树 我正在制作简单的树,但无法弄清楚为什么我会一直收到错误

class BinaryTree:

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

def insert_left(self, new_data):
    if self.left == None:
        self.left = BinaryTree(new_data)
    else:
        t = BinaryTree(new_data)
        t.left = self.left
        self.left = t

def insert_right(self, new_data):
    if self.right == None:
        self.right = BinaryTree(new_data)
    else:
        t = BinaryTree(new_data)
        t.right = self.right
        self.right = t

def get_left(self):
    return self.left

def get_right(self):
    return self.right

def set_data(self, data):
    self.data = data

def get_data(self):
    return self.data

我有上面的代码,但无法弄清楚如何实现它来获得这样的树 enter image description here

我已经尝试过了 def create_a_tree(): tree=BinaryTree('a') tree.insert_left('b') tree.insert_right('c') return(tree)

但这不起作用

1 个答案:

答案 0 :(得分:0)

有些事情似乎与您的代码略有不同。

有一件事是代码似乎没有正确缩进。缩进在Python中具有语法和语义值,因此如果您希望您的方法在 in 类中,则必须缩进,如

class BinaryTree:

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

我可以看到的第二件事是您使用None检查==,而正确的方法是if x is None(请参阅here和{ {3}}了解详情。

作为旁注:与Java不同,Python并不真正需要getter和setter,因为类和大多数对象都可以在运行时进行修改。因此,您只需在set_data对象上设置bt.data=your_data,而不是声明BinaryTree之类的方法。