请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

堆是完全二叉树 在第五章的时候创建了一个二分搜索树 既然都是二叉树 那为什么堆不用二分搜索树的结构

在堆中是用数组实现的
    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回答

liuyubobobo 2017-10-11 01:26:41

因为堆是一棵完全二叉树,可以方便的使用数组的形式表达,这样不仅节省了left,right两个指针的空间,还完全不需要麻烦的指针操作。实现堆使用数组做底层结构,不尽代码简洁,总体效率也高。当然了,如果你愿意,也完全可以使用二叉树结构体的方式来实现堆:)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号