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数小,满足下列的运算式,如下所示: