public class Node {
private int data;
public int getData() {
return data;
}
private Node left;
private Node right;
public Node(int d, Node l, Node r) {
data = d;
left = l;
right = r;
}
// Deep copy constructor
public Node(Node o) {
if (o == null) return;
this.data = o.data;
if (o.left != null) this.left = new Node(o.left);
if (o.right != null) this.right = new Node(o.right);
}
public List<Integer> toList() {
// Recursive code here that returns an ordered list of the nodes
}
完整的课程在这里:https://pastebin.com/nHwXMVrd
我可以使用什么递归解决方案返回Node内部整数的有序ArrayList?我已经尝试了很多东西但是我一直难以找到递归解决方案。
答案 0 :(得分:1)
鉴于你有一个bst
你可以进行inorder遍历,这将为你提供所有元素的递增顺序(已排序),这是一个如何完成的例子:
public List<Integer> toList() {
return createOrderedList(this);
}
private List<Integer> createOrderedList(Node root) {
if(root == null) {
return new ArrayList<>();
}
List<Integer> list = new ArrayList<>();
list.addAll(createOrderedList(root.left));
list.add(root.data);
list.addAll(createOrderedList(root.right));
return list;
}
答案 1 :(得分:0)
我在Java中并不擅长,但这就是做这件事的一般想法:
public List<Integer> toList()
{
List<Integer> newList = new List<Integer>();
newList.add(this.data);
if(left != null)
newList.addAll(left.toList());
if(right != null)
newList.addAll(right.toList());
return newList;
}