慕课《数据结构与算法分析python版》期末

慕课《数据结构与算法分析python版》期末_第1张图片

class BinaryTree:
    def __init__(self,key,val = None, left = None,right = None,parent = None):
        self.key = key
        self.val = val
        self.left = left
        self.right = right
        self.parent = parent

        
def buildTree(lst):
    nodelst = [BinaryTree(i) for i in lst]
    eTree = nodelst[0]
    currentTree = eTree 
    
    def _Tree(currentTree,i):
        if lst[i] < currentTree.key:
            if currentTree.left:
                currentTree = currentTree.left         
                _Tree(currentTree,i)
            else:
                nodelst[i].parent = currentTree
                currentTree.left = nodelst[i]              
        else:
            if currentTree.right:
                currentTree = currentTree.right
                _Tree(currentTree,i)
            else:
                nodelst[i].parent = currentTree
                currentTree.right = nodelst[i]
        return currentTree
     
    for i in range(1,len(lst)):
        _Tree(currentTree,i)
    return eTree
    # return currentTree

def preorder(tree):
    pathlst = []
    def getpath(tree):
        
        while tree:
            pathlst.insert(0,tree.key)
            tree = tree.parent
        pathresult = [str(i) for i in pathlst]
        return print('->'.join(pathresult))
    if tree:
        if not tree.left and not tree.right:

            getpath(tree)

        preorder(tree.left)
        preorder(tree.right)
    return result
    

lst = input().split(" ")
lst = [int(i) for i in lst]
Tree = buildTree(lst)
result =[]
q =[]
leaflst = preorder(Tree)

慕课《数据结构与算法分析python版》期末_第2张图片

def rober(lst):
    
    n = len(lst)

    if n ==1:
        return lst[0]
    elif n == 2:
        return max(lst[0],lst[1])
    else:
        
        maxplst = [0]*n
        maxplst[0] = lst[0]  #只有一个房间
        maxplst[1] = max(lst[0],lst[1]) #两个房间
        for i in range(2,n):
            maxplst[i] = max(maxplst[i-2]+lst[i],maxplst[i-1])
    return maxplst[-1]

lst = input().split(" ")
lst = [int(i) for i in lst]
print(rober(lst))

你可能感兴趣的:(慕课《数据结构与算法分析python版》期末)