Tripadvisor 面经解答 -持续更新ing

2. Binary Search Tree Insert

class Node:
    def __init__(self,val):
        self.left=None
        self.right=None
        self.val=val
        
def insertBST(root,node):
    if root==None:
        root=node
    else:
        if root.val>node.val:
            if root.left==None:
                root.left=node
            else:
                insertBST(root.left,node)
        else:
            if root.right==None:
                root.right=node
            else:
                insertBST(root.right,node)

def inorder(root):
    if root:
        inorder(root.left)
        print root.val
        inorder(root.right)

head=root=Node(1)
node1=Node(2)
node2=Node(3)
node3=Node(4)
node4=Node(2)
insertBST(root,node1)
insertBST(root,node2)
insertBST(root,node3)
insertBST(root,node4)

def main():
    inorder(head)    
    
if __name__=="__main__":
    main()
    
3. Two ordered array find the k-th largest

def findk(A,m,B,n,k):
    if m>n:
        return findk(B,n,A,m,k)
    if m==0:
        return B[k-1]
    if k==1:
        return min(A[0],B[0])
    pa=min(k/2,m)
    pb=k-pa
    if A[pa-1]<B[pb-1]:
        return findk(A[pa:],m-pa,B,n,k-pa)
    else:
        return findk(A,m,B[pb:],n-pb,k-pb)
    return A[pa-1]




def main():
    num1=[1,1,2,9,98]
    num2=[30,31,298]
    m=len(num1)-1
    n=len(num2)-1
    result=findk(num1,m,num2,n,5)
    print result
    
if __name__=="__main__":
    main()
</pre><pre name="code" class="python">
    
            

4.DFS  BFS 

CFABDE



graph = {'A': set(['B', 'C']),
         'B': set(['A', 'D', 'E']),
         'C': set(['A', 'F']),
         'D': set(['B']),
         'E': set(['B', 'F']),
         'F': set(['C', 'E'])}
#print graph


def dfs(graph,start):
    visited=set()
    stack=[start]
    while stack:
        vertex=stack.pop()
        if vertex not in visited:
            visited.add(vertex)
            stack.extend(graph[vertex]-visited)
    return visited


def bfs(graph,start):
    visited=set()
    que=[start]
    while que:
        vertex=que.pop(0)
        if vertex not in visited:
            visited.add(vertex)
            que.extend(graph[vertex]-visited)
    return visited
    






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值