堆是完全二叉树 在第五章的时候创建了一个二分搜索树 既然都是二叉树 那为什么堆不用二分搜索树的结构
来源:5-2 二分搜索树基础 (Binary Search Tree)
慕粉3759846
2017-10-10
在堆中是用数组实现的
MaxHeap(int capacity) {
data = new Item[capacity + 1];
count = 0;
this->capacity = capacity;
}在二分搜索树是用一个结构体的结构实现的
struct Node {
Key key;
Value value;
Node *left;
Node *right;
Node(Key key, Value value) {
this->key = key;
this->value = value;
this->left = this -> right = NULL;
}
};那既然两个都是二叉树 为什么在实现堆的时候 不用二分搜索树的结构体里的结构 而是用数组呢?
写回答
1回答
-
因为堆是一棵完全二叉树,可以方便的使用数组的形式表达,这样不仅节省了left,right两个指针的空间,还完全不需要麻烦的指针操作。实现堆使用数组做底层结构,不尽代码简洁,总体效率也高。当然了,如果你愿意,也完全可以使用二叉树结构体的方式来实现堆:)
00
相似问题