我已經定義就像一棵樹釋放內存 - Visual C
struct tree {
char label[MAX_LENGTH];
char value[MAX_LENGTH];
struct tree *child;
struct tree *next;
};
,現在我需要釋放該樹分配的內存。我寫了下面的代碼。
unsigned int tree_free(struct tree *root)
{
struct tree *current = NULL, *next = NULL, *child = NULL;
unsigned int freecnt = 0;
current = root;
while(current != NULL)
{
next = current->next;
child = current->child;
xfree(current);
freecnt += tree_free(child) + 1;
current = next;
}
return freecnt;
}
該方法返回它釋放的項目數,以便我可以根據所做的分配數來驗證它。此代碼有效。但我不確定這是否是正確的做事方式。
這是一個後綴樹實現。對於項目S,堆棧,過,過流,計算器樹看起來像
root
-s
--stack
---stackoverflow
-over
--overflow
任何建議,以提高代碼的歡迎。
您遺漏了一些細節:(1)樹的結構是什麼?從代碼中可以看出它不是「香草」二叉樹。 (2)什麼是'xfree'? – 2010-08-14 14:19:02
這不是一棵二叉樹。這是後綴樹的一種實現。 xfree只是free()的一個包裝。樹會有多個子元素,而不僅僅是二元樹。 – 2010-08-14 14:21:20
編輯我的帖子來說清楚。 – 2010-08-14 14:24:10