2013-04-01 115 views
-1
static void printAllPathsFromRootToLeaf (BinaryTree<Integer> tree, ArrayList<Integer> path) 
{ 
    if (tree.isEmpty()) 
    { 
     System.out.println("Tree is Empty"); 
     return; 
    } 
    path.add(tree.root()); 

    if (tree.left().isEmpty() && tree.right().isEmpty()) 
    { 
     System.out.println(path); 
     printSum(path); 
     //return; 
    } 
    else 
    { 
     printAllPathsFromRootToLeaf(tree.left(),new ArrayList(path)); 
     printAllPathsFromRootToLeaf(tree.right(),new ArrayList(path)); 
    } 
} 

打印路徑時,它只打印最後一個路徑或它只在我的樹中打印一個路徑。誰會知道爲什麼?樹的打印路徑

謝謝!

回答

0

只打印的最後一條路徑,或者它只是在我的樹打印一個路徑

這是因爲你已經選擇將其與該行可以這樣做:

if (tree.left().isEmpty() && tree.right().isEmpty()) 

AKA如果該節點是一個葉節點,打印它。

一下添加到else語句

else 
{ 
    System.out.println(path); //Not exactly sure what printing an ArrayList like this does, but you say it is doing what you want. 
    printSum(path); 
    printAllPathsFromRootToLeaf(tree.left(),new ArrayList(path)); 
    printAllPathsFromRootToLeaf(tree.right(),new ArrayList(path)); 
}