gpt4 book ai didi

java - 从数组中逐行填充二叉树

转载 作者:行者123 更新时间:2023-11-30 03:53:56 24 4
gpt4 key购买 nike

如何从数组中逐行将节点添加到二叉树中?当根据某种类型的键值将元素添加到正确的位置时,这很容易,并且我尝试将键分配给数组中的值以便逐行添加,但我觉得必须有一种更优雅的方式来做到这一点。

澄清一下,我想要的是获取一个数组并将其转换为这样的树

_ _ _ 0 _ _ _

_ 1 _ _ _ 2 _

3_4_5_6

其中数字表示初始数组中值的索引

最佳答案

请注意,索引为 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);
}
}
}

开头:

Node<MyValueType> root = new Node<MyValueType>();
root.fill(0, vals);

当然,用数组中的任何内容替换 MyValueType。

关于java - 从数组中逐行填充二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23718297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com