有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在写一个递归遍历二叉搜索树的方法。它将访问每个节点,并在访问时将其附加到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) 个答案

  1. # 1 楼答案

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