Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Int/String数组转换为具有节点的二叉树?_Java_Algorithm_Data Structures - Fatal编程技术网

Java 如何将Int/String数组转换为具有节点的二叉树?

Java 如何将Int/String数组转换为具有节点的二叉树?,java,algorithm,data-structures,Java,Algorithm,Data Structures,在Java中,使用提供的节点类编写一个名为tree builder的方法 tree builder是一种方法,它接受输入的int数组并按预先顺序构建树 TA注:道歉也应该有一个帖子,为了这个目的遍历 树 从这些阵列构建 预购[194723-25639428] 顺序[234755-219639428] 邮购[2355-24728946319] 这棵树 | 19 | +----+ / \ /

在Java中,使用提供的节点类编写一个名为tree builder的方法

tree builder是一种方法,它接受输入的int数组并按预先顺序构建树 TA注:道歉也应该有一个帖子,为了这个目的遍历 树

从这些阵列构建

预购[194723-25639428]

顺序[234755-219639428]
邮购[2355-24728946319] 这棵树

            | 19 |
            +----+
           /      \
          /        \
      +----+      +----+
      | 47 |      | 63 |
      +----+      +----+
     /      \           \
    /        \           \
+----+      +----+      +----+
| 23 |      | -2 |      | 94 |
+----+      +----+      +----+
           /                  \
          /                    \
      +----+                  +----+
      | 55 |                  | 28 
public class TreeNode {
    public int data;       // data stored at this node
    public TreeNode left;  // reference to left subtree
    public TreeNode right; // reference to right subtree

    // post: constructs a leaf node with given data
    public TreeNode(int data) {
        this(data, null, null);
    }

    // post: constructs a node with the given data and links
    public TreeNode(int data, TreeNode left, TreeNode right) {
        this.data = data;
        this.left = left;
        this.right = right;
    }
}

public class Tree {
    private TreeNode root;

    public void treeBuilder(int[] array,int[] array) {
    for(int i = 0; i<array.length; i++) {
     // this is where I initalize a node but I'm not sure
     // how to build in pre-order
   }

   }
}

| 19|
+----+
/      \
/        \
+----+      +----+
| 47 |      | 63 |
+----+      +----+
/      \           \
/        \           \
+----+      +----+      +----+
| 23 |      | -2 |      | 94 |
+----+      +----+      +----+
/                  \
/                    \
+----+                  +----+
| 55 |                  | 28 
公共级树节点{
public int data;//存储在此节点上的数据
public TreeNode left;//对左子树的引用
public TreeNode right;//对右子树的引用
//post:使用给定数据构造叶节点
公共树节点(int数据){
这(数据,空,空);
}
//post:使用给定的数据和链接构造节点
公共树节点(int数据,左树节点,右树节点){
这个数据=数据;
this.left=左;
这个。右=右;
}
}
公共类树{
独活根;
公共void树生成器(int[]数组,int[]数组){

对于(int i=0;i如何从一个
int[]
或两个

根节点的值正好出现在预排序序列的开头,后面是子树中的所有值,每个值都是连续的

1) 从预订单序列中取一个值
在顺序中找到它:
  左子树中的所有值都将出现在前面,因此您知道它们的计数
  右子树中的所有值都将出现在
递归地构造2)左和3)右子树

使用1)、2)和3)实例化
TreeNode

如何从
int[]
或两个中获取
TreeNode

根节点的值正好出现在预排序序列的开头,后面是子树中的所有值,每个值都是连续的

1) 从预订单序列中取一个值
在顺序中找到它:
  左子树中的所有值都将出现在前面,因此您知道它们的计数
  右子树中的所有值都将出现在
递归地构造2)左和3)右子树

使用1)、2)和3)实例化
树节点。

编辑了我的答案,因为我没有正确理解问题

他希望根据三个遍历结果构建树


这里给出了解决方案:

编辑了我的答案,因为我没有正确理解问题

他希望根据三个遍历结果构建树


这里给出了解决方案:

根是树中的第一个节点/数组的第一个元素。通常,每个2N和2N+1元素都是数组索引的子元素。这是一个方法,应该已经澄清了您是否给出了示例数组和预期的树?是的,刚刚发布了它,因为预排序从根开始,然后向左,您可以至少得到19和47,但我认为需要更多信息才能知道何时停止向左节点添加,根是树中的第一个节点/数组的第一个元素。通常,每2N和2N+1个元素都是数组索引的子元素。这是一个方法,应该已经澄清了您是否给出了示例数组和预期的树?是的刚刚发布的好,因为预订单从根开始,然后向左,你至少可以得到19和47,但我认为需要更多的信息才能知道何时停止添加到左边node@grey救救我。@grey救救我。