使用 TreeSet 合并两个排序的 LinkedList
Merging two sorted LinkedList using TreeSet
我正在尝试使用 TreeSet 合并两个已排序的 LinkedList,因为它们已经对它自己进行了排序(尽管有一个例外,两个 linkedList 都没有共同的元素)。这里的问题是,我无法确定 return 的 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;
}
}
Output
AddedA : 1
AddedA : 3
AddedA : 5
AddedA : 6
AddedB : 2
AddedB : 4
AddedB : 7
LinkedList : 1 2 3 4 5 6 7 0
gimmeNode
的末尾有一个 new Node()
。这不应该是这种情况——它应该指向 null。因此,new Node()
,因为它是默认构造的,所以有一个 0。这是你的无关 0。你应该实现一种机制来检查你是否在 TreeSet
的最后一个元素 - 一个简单的计数器会做。如果你在最后一个元素,不要设置 temp.next = new Node();
,保留它 null
.
我正在尝试使用 TreeSet 合并两个已排序的 LinkedList,因为它们已经对它自己进行了排序(尽管有一个例外,两个 linkedList 都没有共同的元素)。这里的问题是,我无法确定 return 的 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;
}
}
Output
AddedA : 1
AddedA : 3
AddedA : 5
AddedA : 6
AddedB : 2
AddedB : 4
AddedB : 7
LinkedList : 1 2 3 4 5 6 7 0
gimmeNode
的末尾有一个 new Node()
。这不应该是这种情况——它应该指向 null。因此,new Node()
,因为它是默认构造的,所以有一个 0。这是你的无关 0。你应该实现一种机制来检查你是否在 TreeSet
的最后一个元素 - 一个简单的计数器会做。如果你在最后一个元素,不要设置 temp.next = new Node();
,保留它 null
.