Java 如何在数组中存储值,遍历树?

Java 如何在数组中存储值,遍历树?,java,arrays,recursion,binary-tree,Java,Arrays,Recursion,Binary Tree,所以我有一个二进制树,我想把每个节点的值存储在一个数组中。我试图用这种方式解决我的问题,但是,每次使用函数getAllegements(),this.root.arrayOfObj的大小都会增加。不应该。或者,如果应该,应该是因为我在binaryTree中添加或删除了一个节点。我试图不使用根中的数组,而是创建一个局部变量,但这样我无法保存树中所有节点中的所有对象 class node { node left, right; <T>genericObject;

所以我有一个二进制树,我想把每个节点的值存储在一个数组中。我试图用这种方式解决我的问题,但是,每次使用函数getAllegements(),this.root.arrayOfObj的大小都会增加。不应该。或者,如果应该,应该是因为我在binaryTree中添加或删除了一个节点。我试图不使用根中的数组,而是创建一个局部变量,但这样我无法保存树中所有节点中的所有对象

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

}
类节点{
左、右淋巴结;
一般对象;
ArrayList arrayOfObjs=新的ArrayList();
数组_对象[];
节点(){
左=空;
右=空;
}
类二叉树{
节根;
二叉树(){
root=null;
}
public[]getAllegements(节点t){
this.root.array_objects=null;
如果(t==null){
返回this.root.array_对象;
}否则{
this.root.arrayOfObjs.add(t.genericObject);
}
等位基因(t.left);
等位基因(t.右);
this.root.array_objects=new[t.arrayOfObjs.size()];
对于(int i=0;i
这是我对类
节点的定义,它为我编译

类节点{
左、右淋巴结;
T一般对象;
}
基于以上内容,下面是我对方法
getAllegements()
的实现

public void getAllegements(节点阳极,列表){
如果(阳极==null){
返回;
}
否则{
获取等位元素(阳极、左侧、列表);
列表.添加(阳极.一般对象);
获取等位元素(阳极、右侧、列表);
}
}
您无法创建泛型数组,因此在编译时

T数组_对象[];
这不会:

array_objects=newt[50];

因此,您可以使用数组而不是数组,因为您始终可以将
列表
转换为数组。

@Abra(这不是真正的代码,但与我正在处理的类似),类节点还有一个构造函数,其中left和right为null。@Abra,因为我没有正确检查它。正如我所说的,这不是真实代码,而是真实代码的一般形式。这有帮助吗?@Abra我尝试过,但不起作用。因为我没有使用函数getAllegements返回整数值。我返回的是数组[](我在编译时也遇到了问题,它没有编译)。感谢您的更正,但我认为节点不需要类型。在我的实现中,只是节点,包含左、右节点和数组、arraylist和genericObject。