Java 从数组中逐行填充二叉树
如何从数组中逐行向二叉树添加节点?当基于某种键值将元素添加到适当的位置时,这很容易,我已经尝试为数组中的值分配键值,以便逐行添加,但我觉得必须有一种更优雅的方法来实现这一点 为了澄清这一点,我想要的是获取一个数组,并将其转换为如下所示的树 __u0 uu _一,二, 3 4 5 6Java 从数组中逐行填充二叉树,java,sorting,binary-tree,Java,Sorting,Binary Tree,如何从数组中逐行向二叉树添加节点?当基于某种键值将元素添加到适当的位置时,这很容易,我已经尝试为数组中的值分配键值,以便逐行添加,但我觉得必须有一种更优雅的方法来实现这一点 为了澄清这一点,我想要的是获取一个数组,并将其转换为如下所示的树 __u0 uu _一,二, 3 4 5 6 如果数字表示初始数组中的值的索引,请注意,索引为i的节点的左子节点的索引为2*i+1,右子节点的索引为2*i+2。使用它,非常简单: class Node<T> { T val; Node l
如果数字表示初始数组中的值的索引,请注意,索引为i的节点的左子节点的索引为2*i+1,右子节点的索引为2*i+2。使用它,非常简单:
class Node<T>
{
T val;
Node left = null, right = null;
public void fill(int index, T [] vals)
{
val = vals[index];
if (vals.length > 2*index+1)
{
left = new Node<T>();
left.fill(2*index+1, vals);
}
if (vals.length > 2*index+2)
{
right = new Node<T>();
right.fill(2*index+2, vals);
}
}
}
类节点
{
T值;
节点左=空,右=空;
公共空隙填充(整数索引,T[]VAL)
{
val=val[指数];
如果(vals.length>2*索引+1)
{
左=新节点();
左。填充(2*索引+1,VAL);
}
如果(vals.length>2*索引+2)
{
右=新节点();
右。填充(2*索引+2,VAL);
}
}
}
首先:
Node<MyValueType> root = new Node<MyValueType>();
root.fill(0, vals);
节点根=新节点();
根填充(0,VAL);
当然,用数组中的任何内容替换MyValueType。您确实需要从基本的树算法开始。我知道如何按顺序遍历和基于键值添加。我真的不知道如何在分支之间来回“跳跃”来逐行添加内容查找