gpt4 book ai didi

java - 如何从层序数组构造二叉树?

转载 作者:行者123 更新时间:2023-11-30 05:56:45 28 4
gpt4 key购买 nike

我正在解决一个编码问题,现在我有点困惑。如果给我一个表示二叉树的级别顺序遍历的数组。我如何从中构建一棵树?

到目前为止,这是我的思考过程:我知道 0th 索引是 rootleftChild = 2*i+1rightChild = 2*i+2

这是我到目前为止所得到的,但我认为它不正确:

public Tree buildTree(ArrayList<Tree> arr, int i) {
if (i > list.size() - 1) {
return null;
}

root = list.get(i);
root.LeftChild = buildTree(arr, 2*i+1);
root.RightChild = buildTree(arr, 2*i+2);

return root;
}

我的i从0开始,谢谢。

最佳答案

您的代码仅适用于 complete binary trees ,二叉树的一种特殊情况。

不能仅通过级别顺序遍历构建通用二叉树。

您需要两次次遍历,其中一次必须是中序遍历

以下组合可以唯一标识一棵树。

  • 有序和预序。
  • 按序和后序。
  • 有序和级别顺序。

尽管如果给定数组中有一些分隔符,则有可能构建树(仅给出级别顺序遍历),如 this post 中所述。 。

关于java - 如何从层序数组构造二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53037093/

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