2012-11-03 53 views
0

我試圖確定m-tree樹中的所有節點是否已滿。我認爲我有了一般想法,但我不確定。這是我迄今爲止所做的。確定樹中的某個節點是否已滿

在我的TreeNode類中,我有以下方法。

public class TreeNode 
    { 
     private String label; 
     private String message; 
     private TreeNode[] nodes; 
     private int numChildren; 
     private TreeNode parent; 
     private String prompt; 

      ***other methods and constructors*** 

     public boolean isFull() 
    { 
     for(int i = 0; i < numChildren; ++i) 
     { 
     if(nodes[i] == null) 
      return false; 
     } 
     return true; 
    } 

其中numChildren的是總的可能的兒童在陣列節點[](或只是nodes.length)和節點[]數爲當前節點的所有子節點的數組。 另外,知道我的TreeNodes是雙向鏈接可能會有幫助,所以如果需要的話,我可以檢索當前節點的父節點。

然後,在我的Tree類中,我有以下遞歸方法。

public boolean allNodesFull(TreeNode n) 
    { 
     boolean allFull = false; 
     if(!n.isFull()) 
     { 
     return allFull; 
     } 
     for (int i = 0; i < n.getNumChildren(); ++i) 
     { 
     allFull = allNodesFull(n.getChild(i)); 
     } 
     return allFull; 
    } 
+0

現在是這樣的'allFull'永遠不能'真'。 – jlordo

+0

那是什麼樹? –

回答

1

沒有測試過,希望你已經有了一個測試用例編寫,並告訴我們,如果它的工作原理;)

public boolean allNodesFull(TreeNode n) { 
    if(!n.isFull()) { 
    return false; 
    } 
    for (int i = 0; i < n.getNumChildren(); ++i) { 
    if (!allNodesFull(n.getChild(i))) { 
     return false; 
    } 
    } 
    return true; 
} 
+0

謝謝,完美的作品! – audiFanatic

相關問題