UVa679(二叉完全树)

    题意:有一颗完全二叉树,小球自树上而向下滚落,每当小球滚过一个节点时,节点的方向开关便会被置反;

 

解题思路:由于是完全二叉树(k->left=2k,k->right=2k+1),可以将二叉树存储于数组中(模拟超时);每个小球都是由root向下滚落,开关的方向与这个小球处在第几次经过该节点有关,当小球标号为奇数I时,它是往左走的第(I+1)/2个小球,当I为偶数时,是往右走的第I/2个小球;  模拟小球路线;

#include
#include
const int maxd = 20;
//int s[1<n) break;
				
				}
			}    
			printf("%d\n",k/2); */
			int k = 1;
			for(int i = 0; i < D-1; i++)
			if(I%2) {
				k=2*k;
				I = (I+1)/2;
			}else {
				k = 2*k+1;
				I/=2;
			}
			printf("%d\n",k);
	}
	return 0;
}


 

你可能感兴趣的:(数据结构)