class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

def getIntersectionNode(headA: ListNode, headB: ListNode) -> ListNode:
    # 在这里补充代码
    # pass
    if not headA or not headB :
        return None
    
    pa, pb =headA, headB

    #若相较则指针遍历长度为a+c+b,和b+c+a; 在交点处退出循环
    #若不想交,则指针遍历长度为: a+b, b+a; 在链表尾None退出循环
    while pa != pb :
        if pa :
            pa = pa.next
        else:
            pa = headB 
        pb = pb.next if pb else headA 
    
    return pa  #返回交点或None