我正在编写一种递归遍历二叉搜索树的方法。它将访问每个节点,并在执行此操作时将其附加到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;
}
非常感谢。
答案 0 :(得分:2)
在任何情况下,您几乎都得到了解决方案,但是您没有使用递归调用的结果。当您致电traverse(n.left)
和traverse(n.right)
时,您应该将这些来电的结果添加到listOfNodes