经典算法系(9)-二叉堆&二项树&二项堆&斐波那契堆(Binary Heap&Binomial Tree&Binomial Heap&Fibonacci Heap)



10. 二叉堆(Binary Heap)

 二叉堆是完全二叉树(或者近似完全二叉树);其满足堆的特性:父节点的值>=(<=)任何一个子节点的键值,并且每个左子树或者右子树都是一个二叉堆(最小堆或者最大堆);一般使用数组构建二叉堆,对于array[i]而言,其左子节点为array[2*i],其右子节点为array[2*i+1];二叉堆支持插入,删除,查找最大(最小)键值的操作,但是合并二叉堆的复杂度较高,时间复杂度为O(N);但是二项堆或者斐波那契堆则仅需要O(logN);

11. 二项树(Binomial Tree)
 定义度数为二项树根节点的直接子节点个数;如果一棵二项树的度数为0,则其只包含一个根节点;如果一棵二项树(包括子树)的度数为K,则其根节点包含K个子节点,并且其子节点分别为度数是K-1,K-2,K-3,…,1,0的子树的根;
 

 从上图可知,
 每当一棵二项树的度数从k-1变成k,则其所有子节点的个数增加2k-1。因此度数为K的二项树的所有子节点个数为1+2+…+2k-1=2k。
 二项树的高度由其增加的度数锁带来的子树的高度确定(度数每增加1,相当于二项树根节点增加一个其自身大小的子树,所以其高度和节点数都变成2N或者2H),所以其高度为H=k
 在深度为h的层(从0开始记),节点个数为C(k, h),也就是从k个数中选h个数的选择方法数;C(k, h)=k!/(h!*(k-h)!)

12. 二项堆(Binomial Heap)

Read full article from 经典算法系(9)-二叉堆&二项树&二项堆&斐波那契堆(Binary Heap&Binomial Tree&Binomial Heap&Fibonacci Heap)


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts