2015-08-14 117 views
1

給定一個二叉樹,我們如何找到特定級別的葉節點數量,考慮到根級別爲1等等。給定級別的二叉樹中的葉節點數量?

+0

如果你認爲它已經填滿,那麼它是2^n,其中n = 0是根。如果您假設每個級別都包含最少的節點數量,那麼每個級別都爲1。否則,它可能是介於兩者之間的任何東西,你必須進行遍歷才能找出 – Alex

+0

感謝您的迴應!但我明白了! – mRbOneS

回答

0

您可以簡單地使用BFS或DFS算法。類似的東西(在僞代碼):

Node_counter(根,N):
1.如果根爲空或N < 1返回0
2.如果N == 1
2.1如果根是葉返回1
2.2否則返回0
3.否則返回Node_counter(根 - >左,N-1)+ Node_counter(根 - >右,N-1)

複雜度爲O(N )

0
private int noOfleafLevel(Node root, int leaflevel) { 
     if(root==null) 
      return 0; 
     if(root.left==null&&root.right==null&&leaflevel==1) 
      return 1; 
     else 
      return noOfleafLevel(root.left, leaflevel - 1)+noOfleafLevel(root.right, leaflevel - 1); 
    } 

這是使用級別遍歷在特定級別獲取Leaf的代碼。