2013-04-01 116 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)); 
}