2010-05-09 97 views
0
int Size(struct node* node) 
{ 
    if(node == NULL) 
    { 
     return 0; 
    } 
    else if(node != NULL) 
    { 
     return (Size(node->left) + 1 + Size(node->right)); 
    } 
} 

嗨,任何人都可以發佈堆棧跟蹤以下一段代碼。瞭解所需的C代碼

可以說,如果我們插入值2,1,10,5 ... 然後在遞歸過程中可能是什麼堆棧表示形式..請,它的非常緊迫,它也很混亂...

+9

如果我們爲你做功課,你將不會學到任何東西。 – Yacoby 2010-05-09 09:37:51

+0

先生,它不是一個硬件。我只是想製作一個程序來計算樹的大小。樹中有多少元素。 並與一些互聯網幫助,我發現這段代碼,這看起來很容易,但我試圖理解它,但在遞歸中的一點模糊概念.. – AGeek 2010-05-09 09:43:53

+0

Plz如果任何機構可以使代碼,一點點理解,我很高興.. Thankx .. – AGeek 2010-05-09 09:44:31

回答

2

爲什麼不簡單地使用printf?一個進入時,一個離開功能:

int Size(struct node* node) 
{ 
    printf("Enter %d\n", (node ? node->value : -1)); 
    ... 
    printf("Leave %d\n", (node ? node->value : -1)); 
} 
+0

這個想法是可愛的..但是在哪裏把這個「離開」printf語句,在我的代碼..我想了解我已經發布的程序流程.. PLZ有點指導..: - - ) 反正Thankx爲這個想法.. :-) – AGeek 2010-05-09 10:30:07

+0

把它放在每個返回。當然,你必須對函數進行一些重構,併爲第二次返回使用一個臨時變量。既然你已經在使用遞歸,我相信你知道如何做到這一點。當你的導師問你這個問題時,準備回答問題是什麼?或者使用ifs來檢查NULL情況。 – Secure 2010-05-09 11:18:33

+0

嗯thnx的答覆..我在一家IT公司工作,只是提高upong我的數據結構的概念,所以沒有一點來這樣的導師! Anywayz thanx很多東西.. :-)保持搖擺! – AGeek 2010-05-09 13:01:30

0

嘗試使用gdb並查看gdb的backtrace/bt命令。