Fibonacci二叉树的形成

本文介绍了Fibonacci二叉树的构建原理,通过数据个数N确定树的阶,并展示了构建过程。同时,文章详细阐述了Fibonacci差值原则在搜索算法中的应用,提供了一个`fib_search`函数示例,用于查找排序后的数据。在效率方面,Fibonacci查找的时间复杂度与折半查找相当,但在平均情况下表现更优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fibonacci二叉树的形成

1.以数据个数N来决定Fibonacci为K阶(k-order)

j=0 Fib(0)=0

j=1 Fib(1)=1

j=2 Fib(2)=1

j=3 Fib(3)=2

j=4 Fib(4)=3

……

j=N Fib(N)= Fib(N-1)+Fib(N-2)

设计一最小的k值,使得Fib(k+1)>N+1

2.K=0或k=1则表示Fibonacci只有一个结点,其余别无它物。

3.k>=2,则表示Fibonacci的根为Fib(k),左子树为(k-1)阶Fibonacci树(其根为Fib(k-1),右子树为(k-2)阶Fibonacci树(其根为Fib(k)+Fib(k-2)),上面的算法适用于N+1值为Fibonacci树,若N+1不为Fibonacci树,则找出M使得Fib(k)<N+1,再依上述算法建立Fibonacci树,最后把Fibonacci树的各结点数据减去M,就可以了。

Fibonacci差值原则

(1)左子树为负,右子树为正。

(2)如图所示:

步骤:

假设数据个数有n个且n比某一Fibonacci数小,满足下列的运算式,如下所示:

Fa>=n+1

则Fa-1就是这棵Fibonacci树的树根,而Fa-3则是开始的差值。如果我们要查找一个值key。首先我们比较数组索引和key,而得到下列的三种情况,如下所示:

1. 当key比较小,则我们查找1到Fa-1-1的数据。

2. 当key比较大,则我们查找Fa-1+1到Fa-1的数据。

3. 当key与数组索引Fa-1的值相等,表示查找成功。

4. 继续上述的步骤直到找到键值或Fibonacci树的差值为零。


fib[]={0,1,1,2,3,5,8,13,21,34,……}

int fib_search(int n,i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值