简单树匹配

这是一种判断两棵DOM树匹配程度的方法,返回的是两棵树有相同标签节点的最大数目

def TreeMatch(A,B):
    med=[0,-1,-1]
    if A.tag!=B.tag:return med
    m=len(A.getchildren())
    n=len(B.getchildren())
    maxl=max(m,n)
    M=[[0 for x in range(n+1)]for y in range(m+1)]
    W=[[0 for x in range(n+1)]for y in range(m+1)]
    
    for i in range(1,m+1):
        for j in range(1,n+1):
            if W[i][j]<=0:
                alist=A.getchildren()
                blist=B.getchildren()
                relist=TreeMatch(alist[i-1],blist[j-1])
                W[i][j]=relist[0]
            M[i][j]=max(M[i-1][j],M[i][j-1],M[i-1][j-1]+W[i][j])
    tmp=M[m][n]  
   
    med[0]=tmp+1
    for i in range(1,m+1):
        for j in range(1,n+1):
            if M[i][j]==tmp:
                med[1]=i
                med[2]=j
                break
            
    return med

你可能感兴趣的:(J#)