Java 使用树集合并两个已排序的LinkedList

Java 使用树集合并两个已排序的LinkedList,java,linked-list,treeset,Java,Linked List,Treeset,我正在尝试使用树集合并两个已排序的LinkedList,因为它们已经自己排序了,尽管有一个例外,两个LinkedList都没有公共元素。这里的问题是,在我试图返回的LinkedList中附加了一个神秘的“0”,但我无法确定 Node gimmeNode(Node root, TreeSet<Integer> st){ Node temp = root; Node toPrint = root; Iterator it = st.iterator(); while(it.hasNext

我正在尝试使用树集合并两个已排序的LinkedList,因为它们已经自己排序了,尽管有一个例外,两个LinkedList都没有公共元素。这里的问题是,在我试图返回的LinkedList中附加了一个神秘的“0”,但我无法确定

Node gimmeNode(Node root, TreeSet<Integer> st){
Node temp = root;
Node toPrint = root;
Iterator it = st.iterator();
while(it.hasNext()){
    temp.data = (int) it.next();
    temp.next = new Node();
    temp = temp.next;
}
return root;
}

Node MergeLists(Node headA, Node headB) {
Node root = new Node();
TreeSet<Integer> st = new TreeSet<>();
if(headA==null)
    return headB;
else if(headB==null)
    return headA;
else{

    while(headA != null){
        st.add(headA.data);
        System.out.println("AddedA : " + headA.data);
        headA = headA.next;

    }


    while(headB != null){
        st.add(headB.data);
        System.out.println("AddedB : " + headB.data);
        headB = headB.next;
    }
    root = gimmeNode(root, st);
    return root;
}



}

gimmeNode的末端有一个新节点。不应该是这种情况-它应该指向null。因此,由于新节点是默认构造的,因此它的值为0。这是您无关的0。您应该实现一种机制来检查您是否在树集的最后一个元素,一个简单的计数器就可以了。如果您位于最后一个元素,请不要设置temp.next=new Node;,将其保留为空。

只有在树集合中还保留了一个元素时,它才有下一个工作吗?像whilenode.next!=null,因此如果它在末尾,它就不应该分配内存,因为while循环根本不会执行?是的,但是在while循环的最后一次迭代中-对于集合中的最后一个元素-您设置temp.next=new Node;。此新节点是您面对的0。
AddedA : 1
AddedA : 3
AddedA : 5
AddedA : 6
AddedB : 2
AddedB : 4
AddedB : 7
LinkedList : 1 2 3 4 5 6 7 0