Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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 从未排序的数组构建最大堆会遵循二叉树属性吗?_Java_C_Arrays_Algorithm_Heap - Fatal编程技术网

Java 从未排序的数组构建最大堆会遵循二叉树属性吗?

Java 从未排序的数组构建最大堆会遵循二叉树属性吗?,java,c,arrays,algorithm,heap,Java,C,Arrays,Algorithm,Heap,给定一个大小为10的未排序数组 int[] arr={∞,1,2,3,4,5,6,7,8,9,10}; 如果我执行代码 public void build_heap(){ for(int i=size/2;i>=1;i--) max_heapify(i); } 什么情况下的结果数组遵循二叉树属性 (即左子树

给定一个大小为10的未排序数组

int[] arr={∞,1,2,3,4,5,6,7,8,9,10};
如果我执行代码

public void build_heap(){
            for(int i=size/2;i>=1;i--)
                    max_heapify(i);
}
什么情况下的结果数组遵循二叉树属性

(即左子树<根&根<右子树)

?? 如何生成这样的数组

这是正确的方法吗:
不是使用
build\u heap
,而是继续将元素插入堆中?(有更好的解决方案吗?

没有,您对数据结构感到困惑

堆不能像BST(二进制搜索树)那样保证排序。堆只保证给定节点的子节点满足heap属性(即,对于max堆,它们都小于给定的子树根,对于min堆,它们都大于给定的子树根)

另一方面,BST保证给定子树的根在左子树上的所有键都小于根的键,在右子树上的所有键都大于根的键


编辑:您可以在堆上运行以在nlogn时间内生成一个排序数组,从中可以在线性时间内构造一个平衡的BST。

这是一个
二进制搜索树
属性。不仅仅是一个
二叉树
属性。为什么要使用C标记?二叉树具有不同的堆特性