//求二叉树的第K层结点数
#include<iostream>
#include<vector>
using namespace std;
struct binaryTreeNode
{
int value;
binaryTreeNode *pLeft;
binaryTreeNode *pRight;
};
int KthFloorNodeNum(binaryTreeNode *pRoot,int k)
{
if(k<1 || pRoot==NULL) return -1;
if(1==k) return 1;
int upFloorBegin=0,upFloorEnd=1;//End指向下一个结点
vector<binaryTreeNode *> pNodeVec;
binaryTreeNode *pNode=NULL;
pNodeVec.push_back(pRoot);
for(int i=2;i<=k;i++)
{
for(int j=upFloorBegin;j!=upFloorEnd;j++)
{
pNode=pNodeVec[j];
if(pNode->pLeft)
pNodeVec.push_back(pNode->pLeft);
if(pNode->pRight)
pNodeVec.push_back(pNode->pRight);
}
upFloorBegin=upFloorEnd;
upFloorEnd=pNodeVec.size();
}
return upFloorEnd-upFloorBegin;
}
int main()
{
binaryTreeNode n1,n2,n3,n4,n5,n6,n7;
n1.value=8,n2.value=6,n3.value=10,n4.value=5,n5.value=7,n6.value=9,n7.value=11;
n1.pLeft=&n2,n1.pRight=&n3;
n2.pLeft=&n4,n2.pRight=&n5;
n3.pLef
求二叉树的第K层结点数
最新推荐文章于 2025-07-04 12:08:04 发布