/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
import java.util.Stack;
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
ListNode node1 = pHead1;
ListNode node2 = pHead2;
if (pHead1 == null || pHead2 == null)
return null;
Stack<ListNode> stack1 = new Stack<>();
while (node1!=null){
stack1.push(node1);
node1 = node1.next;
}
Stack<ListNode> stack2 = new Stack<>();
while (node2 != null){
stack2.push(node2);
node2 = node2.next;
}
ListNode s1 = stack1.pop();
ListNode s2 = stack2.pop();
while (!stack1.isEmpty() && !stack2.isEmpty() && s1 == s2){
s1 = stack1.pop();
s2 = stack2.pop();
}
if (stack1.isEmpty()) {
return pHead1;
}
if (stack2.isEmpty()) {
return pHead2;
}
return s1.next;
}
}