【发布时间】:2021-01-18 05:12:18
【问题描述】:
所以我有一个二叉树,我想将每个节点内的值存储在一个数组中。我试图以这种方式解决我的问题,但是,每次使用函数 getAllElements() 时,this.root.arrayOfObj 的大小都会增加。它不应该。或者如果应该,应该是因为我在二叉树中添加或删除了一个节点。我尝试不使用根中的数组,而是创建一个局部变量,但这样我无法保存树中所有节点的所有对象。
class node {
node left, right;
<T>genericObject;
<T> ArrayList arrayOfObjs = new ArrayList<>();
<T>array_objects[];
node(){
left = null;
right = null;
}
class binarytree {
Node root;
binarytree() {
root = null;
}
public <T>[] getAllElements(Node t) {
this.root.array_objects = null;
if (t == null) {
return this.root.array_objects;
} else {
this.root.arrayOfObjs.add(t.genericObject);
}
getAllElements(t.left);
getAllElements(t.right);
this.root.array_objects = new <T>[t.arrayOfObjs.size()];
for (int i = 0; i < t.arrayOfObjs.size(); i++) {
this.root.array_object[i] = this.root.arrayOfObjs.get(i);
}
return this.root.array_objects;
}
}
【问题讨论】:
-
@Abra(这不是真正的代码,但与我正在处理的代码相似),类节点还有左侧和右侧为空的构造函数。
-
@Abra,因为我没有正确检查。正如我所说,这不是真正的代码,它是我的真实代码的通用形式。
-
@Abra 我试过了,但它不起作用。因为我没有使用函数 getAllElements 返回整数值。我正在返回一个
数组 []; (另外我在编译时遇到问题,它没有编译)。
标签: java arrays recursion binary-tree