二叉树之小白系列
题目:有一颗二叉树,最大深度为D且所有叶子的深度都相同。所有结点从上到下从左到右编号为1,2,3,…,2**D-1。在结点1处放一个小球,它会往下落。每一个内结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点上的开关关闭,则往左走,否则往右走,一直走到叶子结点。输入叶子深度D和小球个数I,输出第I个小球最后所在的叶子编号。假设I不超过整棵树的叶子个数。D<=20。输出最多包含1000组数据。
样例输入:4 2
样例输出:12
代码:
#include<iostream>
#include<cmath>
using namespace std;
typedef struct Node
{
int data;
struct Node *lchild,*rchild;
}TreeNode,*pTreeNode;
pTreeNode createBTree(int i,int n)
{
if(i<=n)
{
pTreeNode p=new TreeNode; //创建根节点
p->data=i;
pTreeNode pl