0
我想創建一個AVL樹迭代器,但我遇到麻煩這樣做。這是我必須得到第一個節點的代碼,它成功返回最小值。AVL樹迭代器在C
AVLPtr node = iter->list->root;
AVLPtr current = iter->current;
AVLPtr last = iter->last;
AVLPtr parent;
if(current == NULL || current->parent == NULL)
parent = NULL;
else
parent = iter->current->parent;
if(last == NULL && current == NULL){
while(node->leftChild != NULL){
node = node->leftChild;
iter->current = node;
}
}
我在獲取下一個節點時遇到了SegFault。我認爲這是因爲我實際上在我的第一個if語句中將節點的父節點更改爲NULL。然後,我通過最終在while循環中使root最小化來搞亂我的列表。我的問題是如何在不更改父節點或根節點的情況下獲得第一個節點?還是有什麼我失蹤?
編輯:我應該提取對象,樹中的每個節點保存到一個單獨的鏈接列表通過使用遞歸inorder調用?