如何递归遍历二叉搜索树,将每个节点附加到ArrayList

时间:2014-05-08 12:23:35

标签: java algorithm recursion

我正在编写一种递归遍历二叉搜索树的方法。它将访问每个节点,并在执行此操作时将其附加到ArrayList。因此,当访问所有节点时,它们将进入ArrayList。

我已经写了以下内容,但它不起作用,我不明白为什么。

这里的任何帮助将不胜感激。

方法如下:

/**
 * Traverse a Binary Search Tree and append each node to an ArrayList. 
 * 
 * @param n - this.root of the Binary Search Tree
 * @return - a ListArray of ALL nodes in the calling Binary Search Tree
 */
private List<TreeNode> traverse( TreeNode n ) {

    List<TreeNode> listOfNodes = new ArrayList<TreeNode>();

    if (n == null) 
        return listOfNodes;

    listOfNodes.add(n);

    traverse(n.left);
    traverse(n.right);

    return listOfNodes;

}

非常感谢。

1 个答案:

答案 0 :(得分:2)

在任何情况下,您几乎都得到了解决方案,但是您没有使用递归调用的结果。当您致电traverse(n.left)traverse(n.right)时,您应该将这些来电的结果添加到listOfNodes