我剛剛開始使用樹並正在編寫遍歷二叉樹並訪問每個節點的函數。我爲樹中的每個節點調用一個名爲doSomething(TreeNode * thisNode)的函數。我想確定我所擁有的東西是否正確,我是否正確?謝謝!遍歷二叉樹的函數
void MyTree::Traverse(TreeNode *rt)
{
If(rt != NULL)
Traverse(rt -> left);
doSomething (rt);
Traverse(rt -> right);
}
我剛剛開始使用樹並正在編寫遍歷二叉樹並訪問每個節點的函數。我爲樹中的每個節點調用一個名爲doSomething(TreeNode * thisNode)的函數。我想確定我所擁有的東西是否正確,我是否正確?謝謝!遍歷二叉樹的函數
void MyTree::Traverse(TreeNode *rt)
{
If(rt != NULL)
Traverse(rt -> left);
doSomething (rt);
Traverse(rt -> right);
}
差不多,但不完全。
C++中if
聲明沒有資本化,則必須按如下加上括號:
void MyTree::Traverse(TreeNode *rt)
{
if(rt != NULL)
{
Traverse(rt -> left);
doSomething (rt);
Traverse(rt -> right);
}
}
如果不加括號,語句doSomething(rt)
和Traverse(rt->right)
將如果節點是有效稱爲不管或不!
用一些相關的測試用例來調試你的程序總是一個好主意。在你的代碼中,如果rt不是NULL,你認爲會發生什麼?這應該可以幫助你弄清楚你是否做得對。
非常感謝! –