2015-08-14 80 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的代码。