数据结构之二叉树汇总

   二叉树的构造方法:

  1.递归方法:

  

class Node():
    def __init__(self,value=None):
        self.lchild=None
        self.rchild=None
        self.value=value

class Bitree():
    def __init__(self):
        self.root=None

    #采用递归方法
    def add(self,data,node):
        if not self.root:
            self.root=Node(data)
            return
        if data<node.value:
            if not node.lchild:
                node.lchild=Node(data)
                return node
            else:
                return self.add(data,node.lchild)
        else:
            if not node.rchild:
                node.rchild=Node(data)
                return node
            else:
                return self.add(data,node.rchild)

2.采用队列方法:

#采用队列方法
    def add(self,data):
        if not self.root:
            self.root=Node(data)
            return
        queue=[self.root]
        while 1:
            node=queue.pop()
            if data < node.value:
                if not node.lchild:
                    node.lchild = Node(data)
                    return
                else:
                    queue.append(node.lchild)
            else:
                if not node.rchild:
                    node.rchild = Node(data)
                    return
                else:
                    queue.append(node.rchild)

前序中序后序遍历方法:

    # 前序遍历,根,左右
    def front_travel(self, node):
        if not node:
            return
        self.data_list.append(node.value)
        if node.lchild:
            self.front_travel(node.lchild)
        if node.rchild:
            self.front_travel(node.rchild)

    # 中序遍历,左根右
    def middle_travel(self, node):
        if not node:
            return
        self.middle_travel(node.lchild)
        self.data_list.append(node.value)
        if node.rchild:
            self.middle_travel(node.rchild)
# 后序遍历,右左根
    def rear_travel(self, node):
        if not node:
            return
        self.rear_travel(node.rchild)
        if node.lchild:
            self.rear_travel(node.lchild)
        self.data_list.append(node.value)


猜你喜欢

转载自www.cnblogs.com/xuehaiwuya0000/p/11487703.html