gpt4 book ai didi

java - 如何将 Node 树的数据转换为有序的 ArrayList?

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:57 25 4
gpt4 key购买 nike

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
}

完整类(class)在这里:https://pastebin.com/nHwXMVrd

我可以使用什么递归解决方案来返回节点内整数的有序 ArrayList?我已经尝试了很多东西,但我一直难以找到递归解决方案。

最佳答案

鉴于您有一个 bst,您可以对 in 进行中序遍历,这将为您提供所有元素的递增顺序(已排序),这是一个如何完成的示例:

 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;
}

关于java - 如何将 Node 树的数据转换为有序的 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49025478/

25 4 0