2 回答

TA貢獻1735條經驗 獲得超5個贊
visit 一般是指樹型鏈表結構中對某個節點內容進行訪問的函數,就是取出節點內容去做某一件事,通常算法中不寫出具體函數內容。
樹型鏈表結構中自頂開始按照某種順序順藤摸瓜至某個節點的過程稱為“遍歷”:
void traverse(link h, void visit(link))
{
if (h == 0) return;
visit(h);
traverse(h->l, visit);
traverse(h->r, visit);
}
前序遍歷(非遞歸):
非遞歸的基于棧的函數與上面的遞歸函數在功能上是相等的。
void traverse(link h, void visit(link))
{
Stack<link> s;
s.push(h);
while(!s.empty())
{
visit(h = s.pop());
if (h->l != 0) s.push(h->l);
if (h->r != 0) s.push(h->r);
}
}
層次順序的遍歷:
把前序遍歷中基本數據結構從棧轉變成隊列,這樣的轉變就使遍歷轉成層次順序的。
void traverse(link h, void visit(link))
{
Queue<link> q;
q.put(h);
while (!q.empty())
{
visit(h = q.get());
if (h->l != 0) q.put(h->l);
if (h->r != 0) q.put(h->r);
}
}
添加回答
舉報