只对一种方法使用外部字段



我正在为二叉树实现递归有序遍历,并希望将每个节点的数据保存在仅通过此方法修改的列表inOrderList中。在CCD_ 2函数中定义列表是一个问题,因为它是递归的。不确定在哪里声明列表,也许我应该更改项目的结构,我应该如何用最佳实践实现此功能?

class TreeNode {
private TreeNode left;
private TreeNode right;
private Integer data;
public TreeNode(TreeNode left, TreeNode right, Integer data) {
this.left = left;
this.right = right;
this.data = data;
}
// getters..
}
class TreeOperations {
public static void inOrder(TreeNode node) {
if (node == null) return;
inOrder(node.getLeft());
inOrderList.add(node.getData()); // where to define ArrayList<Integer> inOrderList?
inOrder(node.getRight());
}
// many more methods not using inOrderList
}

有一个帮助函数来执行实际递归,即:

public static List<Integer> inOrder(TreeNode node) {
final List<Integer> inOrderList = new ArrayList<Integer>();
inOrderHelper(node, inOrderList);
return inOrderList;
}
private static void inOrderHelper(TreeNode node, List<Integer> inOrderList) {
if (node == null) return;
inOrderHelper(node.getLeft(), inOrderList);
inOrderList.add(node.getData());
inOrderHelper(node.getRight(), inOrderList);
}

最新更新