美文网首页
基础知识-二叉树的构建(python)

基础知识-二叉树的构建(python)

作者: JunfengsBlog | 来源:发表于2019-08-09 22:39 被阅读0次

准备刷LeetCode树专题的时候,发现要测试自己写的代码能不能给出正确结果的时候,必须要把题目给出的元素列表先构建成二叉树,这样自己在本地的时候才方便测试代码是不是对的。所以自己先把树的构建代码写出来,以后刷题直接拷贝来用比较方便。

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Tree:
    def __init__(self):
        self.root = None  # 初始化时根节点为None
        self.queue = []  # 用来保存子树未添加完的节点

    def add(self, elem):
        # 给树添加节点
        node = TreeNode(elem)  # 首先有一个node节点来保存每一要添加的节点
        if self.root is None:  # 如果树还未构建,即根节点root为空的话, 则构建根节点并且把根节点加入queue中
            self.root = node
            self.queue.append(self.root)

        else:
            treeNode = self.queue[0]  # 根节点已经构建好的情况下,取出queue中第一个节点,为这个节点构建子树,注意这个时候是取出,不是弹出,弹出操作是在左右子树都构建完成时执行的
            if treeNode.left is None:
                treeNode.left = node
                self.queue.append(treeNode.left)  # 把这个节点的左子树节点加入queue中, 等待构建
            else:
                treeNode.right = node
                self.queue.append(treeNode.right)  # 把这个节点的右子树节点加入queue中, 等待构建
                self.queue.pop(0)  # 当treeNode的子树构建完毕时, 弹出这个已经构建好的节点,准备构建queue中下一个节点的子树(即queue[0])


if __name__ == '__main__':
    tree = Tree()
    nodeList = [1, 2, 3, 4, 5, 6, 7]
    for node in nodeList:
        tree.add(node)  # 添加节点, 构建二叉树

相关文章

网友评论

      本文标题:基础知识-二叉树的构建(python)

      本文链接:https://www.haomeiwen.com/subject/uwwkjctx.html