完全二叉树,知道总节点数,计算叶子结点的数量

来源:互联网 发布:webpack 压缩混淆js 编辑:程序博客网 时间:2024/04/24 21:24

昨天面试,有一道题是:完全二叉树,知道总节点数,计算叶子结点的数量。由于当时要求在纸上写代码,没有实际运行,所以回来后他这个代码调试一下.

// Challenge8.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "math.h"//问题:完全二叉树知道总节点数, 求叶子节点的数量//求某层节点个个数int levelnode(int deep){int sum = 1;for(int i = 0; i < deep; i++){sum *= 2;}return sum;}//计算叶子节点的数量int leafnode(int allnode){int deep = 0;while (allnode > 0){allnode -= levelnode(deep);deep++;}int leaf = levelnode(deep - 1) + allnode;return leaf;}int _tmain(int argc, _TCHAR* argv[]){printf("leafnode=%d\n", leafnode(17));getchar();return 0;}


 

 

原创粉丝点击