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

Would building a max heap from an Unsorted array would follow Binary Tree properties?

给定一个大小为 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);
}

什么情况中的结果数组遵循二叉树属性

( ie left subtree < root & root < right subtree )

? 如何生成这样的数组?

这是正确的方法吗: 而不是使用 build_heap , keep 我将继续将元素插入堆中? (有更好的解决方案吗?)

不,你对你的数据结构感到困惑。

堆不能像 BST(二叉搜索树)那样保证顺序。堆仅保证给定节点的子节点满足堆 属性(即,对于最大堆,它们都小于给定的子树根,对于最小堆,它们都小于给定的子树根)。

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

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