[C++] 如果有個Tree structure,Traverse using recursion會Stack overflow

有冇Example可以用loop代替
  1. struct _node {
  2.     int data;
  3.     struct _node* sibling;
  4.     struct _node* child;
  5. };
複製代碼
點可以prevent stack overflow
唔系功課....
想Traverse using loops...
THX

回覆 1# luckiejacky


如果用最一般嘅traverse , 乜弓conditions 都唔check

只要其中兩個 node 嘅sibling錯左就會recursion死,根本同 用唔用 loop 無關

例如
Node 1 sibling-> Node 2
Node 2 sibling-> Node 1

TOP

Algorithms in C by Robert Sedgewick 第5個chapter有教點remove recursion. 其實好多algorithms既入門書都有,google都會search到答案,唔係到直接答你啦。

TOP

回覆 2# hihihi123hk


    如果佢棵tree好多個level,個recursive function既local variable (stack)會越黎越多,因為個function到leaf node先會return,如果未到leaf個stack已經爆左咁就唔得掂

TOP

Thanks all chings

TOP

可以自己起個stack輔助looping

TOP

現今電腦強勁, 一般人寫 program 好難用得盡 stack,
咁情況十之八九係 loop 死, 應從呢個方向debug

TOP