数据结构树-二叉树的实现(3)

使用列表实现二叉树:

def BinarTree(r):
    return [r,[],[]]
 
def insertLeft(root,newBrach):
    t=root.pop(1)
    if len(t)>1:
        root.inset(1,[newBrach,t,[]])
    else:
        root.insert(1,[newBrach,[],[]])
    return root
 
def insertRight(root,newBrach):
    t=root.pop(2)
    if len(t)>1:
        root.insert(2,[newBrach,[],t])
    else:
        root.insert(2,[newBrach,[],[]])
    return root
 
def getRootVal(root):
    return root[0]
 
def setRootVal(root,newVal):
    root[0]=newVal
 
def getLeftChild(root):
    return root[1]
 
def getRihtChild(root):
    return root[2]
 
tree=BinarTree('a')
insertLeft(tree,'b')
insertRight(tree,'c')
insertLeft(getLeftChild(tree),'d')
insertRight(getLeftChild(tree),'e')
insertLeft(getRihtChild(tree),'f')
print(tree)
View Code

计算二叉树节点的个数

def count(root):
    if root==[]:
        return 0
    else:
        n1=count(root[1])
        n2=count(root[2])
        n=1+n1+n2
        return n
 
tree=['a',
        ['b',
            ['d',[],[]],
            ['e',[],[]],
        ],
        ['c',
            ['f',[],[]],
            []
        ]
    ]
sum=count(tree)
print(sum)

猜你喜欢

转载自www.cnblogs.com/topass123/p/12653166.html