2013-10-17 63 views
1

我剛剛開始使用樹並正在編寫遍歷二叉樹並訪問每個節點的函數。我爲樹中的每個節點調用一個名爲doS​​omething(TreeNode * thisNode)的函數。我想確定我所擁有的東西是否正確,我是否正確?謝謝!遍歷二叉樹的函數

void MyTree::Traverse(TreeNode *rt) 
{ 

If(rt != NULL) 

Traverse(rt -> left); 
doSomething (rt); 
Traverse(rt -> right); 

} 

回答

1

差不多,但不完全。

C++中if聲明沒有資本化,則必須按如下加上括號:

void MyTree::Traverse(TreeNode *rt) 
{ 
    if(rt != NULL) 
    { 
     Traverse(rt -> left); 
     doSomething (rt); 
     Traverse(rt -> right); 
    } 
} 

如果不加括號,語句doSomething(rt)Traverse(rt->right)將如果節點是有效稱爲不管或不!

+0

非常感謝! –

0

用一些相關的測試用例來調試你的程序總是一個好主意。在你的代碼中,如果rt不是NULL,你認爲會發生什麼?這應該可以幫助你弄清楚你是否做得對。