2013-10-30 144 views
-5

我正在嘗試爲三度樹的inorder遍歷(左,節點,中間,右)寫一個算法。三度樹的遞歸和非遞歸遍歷

下面是一個正確的算法嗎?

inorder(node) 
{ 
    if (node) { 
    inorder(node->left); 
    print("%d", node->value); 
    if (node->mid) { 
     inorder(node->mid); 
     print("%d", node->value); 
     inorder(node->right); 
    } 
    else 
     inorder(node->right); 
    } 
} 
+0

您正在打印兩次節點的值。另外,如果node爲null,那麼不應該有任何else語句IMO。 –

+0

所有節點的度數= 3或1 <=度數<= 3。你應該檢查分支的存在,然後簡單地執行它們。 – user568109

+0

@ user568109我想執行這隻適用於三度樹... 它的工作原理或附帶有一些問題.. ?? – Vaibhav

回答

0

您錯誤地打印節點值兩次。

您不需要檢查node->mid,因爲這是在inorder(node->mid);內部檢查的。

inorder(node) 
{ 
    if (node) 
    { 
    inorder(node->left); 
    print("%d ", node->value); 
    inorder(node->mid); 
    inorder(node->right); 
    } 
} 
+0

真的說...謝謝!! :) – Vaibhav