您的位置:首页 > 其它

二叉树的层序遍历与一个数阶乘中0的个数

2017-07-23 16:57 239 查看
#pragma once
#include <iostream>
#include <stack>
#include <queue>
#include <stdio.h>
#include <assert.h>
using namespace std;
/*#################################################
层序遍历:先遍历左子树,再遍历右子树
先遍历i  再遍历2*i+1   再遍历2*i+2
遍历时,把它放入队列中,为下一层遍历做准备
重复子过程
利用队列:先把根节点放入队列中
再进行循环,拿出节点,打印,再存入子节点(左右孩子)
####################################################*/
typedef struct BinaryTreeLeverOrder
{
int value;
struct BinaryTreeLeverOrder* Lchild;
struct BinaryTreeLeverOrder* Rchild;
}Node;

void LeverOrder(Node* root)
{
assert(root);
queue<Node*> QueueNode;
Node* prater = root;
QueueNode.push(prater);//先把父节点放进去
while (QueueNode.size())
{
Node* pnode = QueueNode.front();
QueueNode.pop();
cout << pnode->value ;
if (pnode->Lchild != NULL)
QueueNode.push(pnode->Lchild);
if (pnode->Rchild != NULL)
QueueNode.push(pnode->Rchild);
}
}


/*#########################################################
输入10   则判断10!(10的阶乘末尾有几个零)
展开:1*2*3*4*5*6*7*8*9*10
只有  2*5    *10会得到零(10也是2*5)
可以从2   和5 出发,又因为一个数阶乘中2的数目明显多于5的数目
则可计算5的数目,就可以得到多少个零
##########################################################*/

int JudgeFactorialOfZero(const unsigned int N)
{
unsigned int i = 1;
int count = 0;
while (i <= N)
{
int j = i;
while (j % 5 == 0)//有一个或多个5
{
count++;
j = j / 5;
}
i++;

}
return count;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树
相关文章推荐