【发布时间】:2020-05-10 16:29:43
【问题描述】:
我想使用中序遍历遍历给定的树。将排序后的数组插入 BST(保持相同的形状)
这是我的目标:
public static BinTreeNode<Integer> ARR_TO_BST(BinTreeNode<Integer> root, int[] arr, int ind){
if (root.GetLeft() != null)
ARR_TO_BST(root.GetLeft(), arr, ind);
root.SetInfo(arr[ind]);
ind+=1;
if (root.GetRight() != null)
ARR_TO_BST(root.GetRight(), arr, ind);
return root;
问题是如果数组是arr = {10,20,30,40,50,60}
树是:
返回输出是一棵树,如果我按顺序遍历它是:10 20 10 20 10 20 ... 而不是 10 20 30 40 50 60
我需要输出与图片的形状相同但具有arr 的值,该算法是在树上按顺序遍历:左子树 - 顶点 - 右子树
但我们不是读取值,而是将值从arr 插入到root
我将不胜感激!谢谢
【问题讨论】:
-
所以你已经以某种方式定义了树和一个数组,你想创建完全相同的树,但由数组中的项目组成,以便中序遍历与通过给定数组的项目迭代相同?
-
@Ecto 我在我的主函数上定义了树,我想创建一个具有相同形状但具有数组值(我选择值)的新树,同时保持树 BST -是,按顺序遍历它并放入数组中的值:左子树 - 顶点 - 右子树。简而言之:对你的问题是肯定的,按照 BST = 有序数组的顺序排列
-
我有post解决方案,你能检查一下吗
-
@sc0der 嘿,谢谢你的回答,我们可以只使用数组来完成这个吗?还是不可能?
-
@sc0der 我需要保持树的形状和 BST 的属性(左
标签: java algorithm binary-tree binary-search-tree