public static BiNode linklist(BiNode root)
{
BiNode head = null, tail=null;
convertBST(head, tail, root);
return head;
}
public static void convertBST(BiNode head, BiNode tail, BiNode root)
{
BiNode leftTail = null, rightHead = null;
if(root==null){
head = null;
tail = null;
return;
}
System.out.println("root = "+root.key);
convertBST(head, leftTail, root.node1);
convertBST(rightHead, tail, root.node2);
if(leftTail != null)
{
System.out.println("leftTail = "+leftTail.key);
leftTail.node2 = root;
root.node1 = leftTail;
}else{
head = root;
System.out.println("head = "+ head.key+", root = "+root.key);
}
if(rightHead != null)
{
rightHead.node1 = root;
root.node2 = rightHead;
}else{
tail = root;
System.out.println("tail = "+ tail.key+", root = "+root.key);
}
}
上面是我的java代碼,它用於將BST轉換爲雙鏈表。將二叉搜索樹轉換爲JAVA中的鏈接列表
但我不知道爲什麼頭總是改變,這應該指向鏈接列表的頭部,而不是改變。
我很高興,偉大的頭腦會幫助我調試此代碼!謝謝!!!
你能發佈'linklist()'和'convertBST()'的代碼嗎?其他代碼似乎都不會影響您的BST到鏈接列表邏輯,因此它只是將所有內容混淆在一起。 如果一切都整齊地縮進,它也會有所幫助。 –