统计完全二叉树的节点数
生活随笔
收集整理的這篇文章主要介紹了
统计完全二叉树的节点数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路:
1、利用完全二叉樹的性質,判斷頭節點的右子樹的最左節點是否和頭節點的最左節點在同一層
2、如果是同一層,說明頭節點的左子樹是一個滿二叉樹,利用公式計算出左子樹的節點個數,再加上頭節點,個數為
2^(h-1)-1+1=2^(h-1),接下來再計算右子樹的個數,可以用遞歸的方式求出來
3、如果不再同一層,則右子樹是一個滿二叉樹,可以用公式計算出右子樹的節點個數,再加上頭節點,也就是2^(h-l-1),l表示節點所在的層數
def nodeNum(head):def getMostLeftLevel(head,level):if head == None:return 0while head!=None:level +=1head = head.leftreturn level - 1def bs(head,level,height):if level == height:return 1if getMostLeftLevel(head.right,level+1) == height:return (1<<(height-1)) + bs(head.right,level+1,height)else:return (1<<(height-level-1)) + bs(head.left,level+1,height)if head == None:return 0return bs(head,1,getMostLeftLevel(head,1))?
總結
以上是生活随笔為你收集整理的统计完全二叉树的节点数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的序列化和反序列化
- 下一篇: 设计RandomPool结构