[Python] 斐波那契堆的实现

本文介绍了Python中斐波那契堆的实现,包括元素(节点)的初始化、插入、查找、合并、删除等操作。斐波那契堆主要用于实现可合并堆,并在常数摊还时间内完成特定操作。
摘要由CSDN通过智能技术生成

[Python] 斐波那契堆的实现

斐波那契堆是一种基于堆的数据结构,其用途主要为:
- 实现“可合并堆”
-某些在斐波那契堆中常数摊还时间内完成的操作频繁使用的应用

具体函数(操作):

首先介绍堆中元素(节点)的实现:
元素初始化

def __init__(self, key):
        self.key=key #关键字
        self.degree=0 #元素在堆中的度
        self.p=0 #指向双亲节点
        self.child=0 #指向第一个孩子节点
        self.left=0 #左向循环指针
        self.right=0 #右向循环指针
        self.mark=False #标记

x.GetChild(c): 使元素c成为元素x的孩子节点

def GetChild(self,cn):
        cn.p=self
        self.degree=self.degree+1
        if self.child==0:
            self.child=cn
            cn.left=cn
            cn.right=cn
        else:
            c=self.child
            cn.right=c
            cn.left=c.left
            cn.left.right=cn

x.printNode():循环输出元素x和它的同一级节点及他们的子节点

def printNode(self):
        if self.child!=0:
            c=self.child
            cl=c.left
            while True:
                print("%d has child: %d" % (self.key,c.key))
                c.printNode()
                if cl==c:
                    break
                c=c.right

x.SearchChild(key):循环搜索关键字为key的节点

def SearchChild(self, key):
        w=self
        v=self
        resultnode=0
        while True:
            if w.key==key:
                return w
            if w.child!=0:
                resultnode=w.child.SearchChild(k
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值