ツリーの第K層のノードの個数を求めます
3546 ワード
タイトル:ツリーの第k層のノードの個数を求めます:
考え方:
1.再帰:ルートがrootである二叉木の第k層ノードの個数を求めるのは、rootを要求することである.left第k-1層ノードの個数+root.right第k-1層ノードの個数
2.反復:キューを利用することは,二叉木の高さを求めることに相当し,どの層の高さを求めるかにすぎない.
転載先:https://www.cnblogs.com/lfdingye/p/7364093.html
考え方:
1.再帰:ルートがrootである二叉木の第k層ノードの個数を求めるのは、rootを要求することである.left第k-1層ノードの個数+root.right第k-1層ノードの個数
public static int getNumberOfKLevel(TreeNode root,int k){
if(root == null || k <1)
return 0;
if(k == 1)
return 1;
int numLeft = getNumberOfKLevel(root.left,k-1);
int numRight = getNumberOfKLevel(root.right,k-1);
return numLeft+numRight;
}
2.反復:キューを利用することは,二叉木の高さを求めることに相当し,どの層の高さを求めるかにすぎない.
public static int getNumberOfLevelK(TreeNode root,int k){
if(root == null || k <1)
return 0;
if(k == 1)
return 1;
Queue queue = new LinkedList();
int num = 1;
int currentLevelNum = 0;
queue.add(root);
while(k >1){
while(num > 0){
TreeNode node = queue.remove();
if(node.left != null){
queue.add(node.left);
currentLevelNum++;
}
if(node.right != null){
queue.add(node.right);
currentLevelNum++;
}
num --;
}
num = currentLevelNum;
k--;
}
return queue.size();
}
転載先:https://www.cnblogs.com/lfdingye/p/7364093.html