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