Python3 之实现二叉树

王大爷 2021年08月08日 398次浏览

class SelfNode(object):
    element=0
    lchild = None
    rchild = None
    def __init__(self,element:int,lchild=None,rchild=None):

        self.element = element
        self.lchild = lchild
        self.rchild = rchild


class SelfTree(object):
    nodeNum = 0
    nodeArr = []
    rootNode = {}
    def __init__(self,rootNode:SelfNode):
        self.nodeArr.append(rootNode)
        self.rootNode = rootNode
        nodeNum = len(self.nodeArr)


    def addNode(self,node:SelfNode):
        tagetNode = self.rootNode
        while tagetNode!=None:
            if node.element>=tagetNode.element:
                if tagetNode.rchild == None:
                    tagetNode.rchild = node
                    break
                else:
                    tagetNode =  tagetNode.rchild
            else:
                if tagetNode.lchild ==None:
                    tagetNode.lchild = node
                    break
                else:
                    tagetNode = tagetNode.lchild


    def preorder(self,node:SelfNode):
        if node ==None:
            return
        print(node.element)
        self.preorder(node.lchild)
        self.preorder(node.rchild)

    def innerOrder(self,node:SelfNode):
        if node ==None:
            return
        self.innerOrder(node.lchild)
        print(node.element)
        self.innerOrder(node.rchild)

    def endOrder(self,node : SelfNode):
        if node == None:
            return
        self.endOrder(node.lchild)
        self.endOrder(node.rchild)
        print(node.element)

treeRoot = SelfNode(100)
tree = SelfTree(treeRoot)

tree.addNode(SelfNode(101))
tree.addNode(SelfNode(110))
tree.addNode(SelfNode(120))
tree.addNode(SelfNode(9))
tree.addNode(SelfNode(10))
tree.addNode(SelfNode(75))

tree.preorder(treeRoot)

print("------------------")

tree.innerOrder(treeRoot)

print("------------------")

tree.endOrder(treeRoot)