如上图所示,由正整数1,2,3……组成了一颗二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。
比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。
3 12 0 0
4解法:
package dsa; import java.util.Scanner; /** * 二叉树 * @author tanlvxu * */ public class Demo19 { int a[] = new int[33] ; public static void main(String[] args) { new Demo19().test() ; } /** * 把2的i次方存在a[i]中 */ public void Init() { int i ; for(i=2,a[0]=0,a[1]=1;i<33;i++) { a[i] = a[i-1]*2 ; } } public void test() { Scanner sc = new Scanner(System.in) ; int m,n,p,h; m = sc.nextInt() ; n = sc.nextInt() ; while(m!=0) { Init(); p = m ; h = 1; //计算从m到n层的深度 while(p<=n) { p *= 2 ; h++ ; } p /= 2 ; h-- ; //当m,n不在同一棵树上 if(p+a[h]-1<n) System.out.println(a[h+1] - 1) ; //当m,n在同一棵树上 else System.out.println(a[h] + n - p) ; m = sc.nextInt() ; n = sc.nextInt() ; } } }
相关推荐
二叉树的应用,二叉树的应用,二叉树的应用,
数算的二叉树的POJ作业,分别有:二叉树1_二叉树的操作;二叉树2_文本二叉树;二叉树3_由中根序列和后根序列重建二叉树;二叉树4_表达式.表达式树.表达式求值;二叉树5_Huffman编码树;二叉树6_二叉搜索树;二叉树7_...
- 树:如二叉树和AVL树,用于存储和检索有序数据,如`poj2513`。 - **简单搜索** - 深度优先搜索:如`poj2488, poj3083`。 - 广度优先搜索:如`poj3278, poj1426`。 - **动态规划** - 背包问题:如`poj1837, ...
- (poj2388, poj2299):介绍二叉树、平衡二叉树等。 3. **字符串处理**: - (poj3349, poj3274, POJ2151, poj1840, poj2002, poj2503):字符串操作算法,如哈希函数的使用、模式匹配算法等。 4. **集合和映射**...
在 POJ 百练 题目分类中,递归类题目包括菲波那契数列(2753)、二叉树(2756)、逆波兰表达式(2694)、放苹果(1664)、红与黑(2816)、八皇后问题(2754)、木棍问题(2817)、城堡(2815)、分解因数(2749)、...
报告可能会讲解链表、数组、栈、队列、树(二叉树、平衡树如AVL和红黑树)、哈希表等数据结构的特点和应用场景。 3. **复杂度分析**:为了确保算法的效率,报告会深入分析每种算法的时间复杂度和空间复杂度,教授...
2. **数据结构**:链表、栈、队列、堆、哈希表、树(如二叉树、平衡树、B树、Trie树等)和图。 3. **动态规划**:理解状态转移方程,解决具有重叠子问题和最优子结构的问题。 4. **贪心算法**:在每一步选择局部最...
例如,数据结构部分可能包括链表、栈、队列、树、图等经典结构的运用,如二叉树的遍历、图的深度优先搜索和广度优先搜索等;在图论方面,可能会遇到最小生成树、最短路径等问题;动态规划则常用于解决背包问题、最长...
常见的数据结构有数组、链表、栈、队列、哈希表、树(二叉树、红黑树等)、图等。 **重要性**:数据结构是解决复杂问题的关键。合理选择数据结构可以显著提高算法的效率,减少内存占用。 **示例题目**: - POJ ...
5. **数据结构**:二叉堆、平衡二叉树(如AVL或红黑树)等数据结构可能会在实现O(nlogn)算法中起到关键作用,用于存储和查找元素。 6. **测试用例设计**:解题报告中还会包括如何构造测试用例以确保代码的正确性,...
1. **树和二叉树**:树和二叉树的基本操作和应用(poj1035, poj3080, poj1936)。 2. **堆**:堆排序及其在优先队列中的应用(poj2388, poj2299)。 3. **哈希表**:用于快速查找和存储,如Hash函数的设计(poj3349,...
2. **数据结构**:链表、栈、队列、树(二叉树、平衡二叉树、红黑树等)、图、哈希表、堆、优先队列等。 3. **数学知识**:组合数学、数论(模运算、同余方程、最大公约数与最小公倍数、质因数分解等)、概率统计、...
3. **数据结构**:链表、栈、队列、树(二叉树、平衡树、B树、Trie树等)、图、哈希表、堆等。 4. **数学知识**:组合数学、数论、线性代数、概率统计等在解题中的应用。 5. **字符串处理**:KMP算法、Boyer-Moore...
2. **数据结构**:链表、数组、栈、队列、树(二叉树、平衡树、堆)、图等。 3. **字符串处理**:KMP算法、Rabin-Karp算法、Manacher's Algorithm等。 4. **数学应用**:模运算、数论、组合数学、图论等。 5. **...
大顶堆是一种特殊的完全二叉树,其每个节点的值都大于或等于其子节点的值,常用于实现优先队列,快速找到最大元素,或者进行高效的排序算法,如堆排序。 在编程竞赛中,大顶堆经常被用来解决时间复杂度要求较高的...
例如,二叉树、队列、堆、栈、图等数据结构在POJ问题中有着广泛的应用。 4. **复杂度分析**:理解并估算算法的时间复杂度和空间复杂度,是保证程序在限定时间内完成的关键。报告会详细计算并解释算法的复杂度,以便...
线段树的基本概念是将一维数组划分为多个子区间,并将这些子区间对应到一棵二叉树的节点。每个节点代表一个区间,叶节点对应原始数组的元素,非叶节点则表示其子节点对应的区间的合并值。通过这样的结构,可以快速地...
9. **数据结构**:如数组、链表、栈、队列、树(二叉树、平衡树如AVL和红黑树)、图等,是实现算法的基础。 10. **数学基础**:如模运算、质数判断、快速幂、中国剩余定理等,这些在解决算法问题时经常用到。 通过...
10. T062.cpp - 可能是树形结构问题,如二叉树或树的遍历,C++的递归和指针操作是基础。 通过分析和学习这些源码,开发者不仅可以提升C++编程技巧,还能加深对算法的理解,对于参加ACM/ICPC等编程竞赛或者提高软件...
1472可能是关于数据结构(如二叉树或图)的问题,要求编写代码来处理特定的查询或操作。 1331可能涉及到动态规划,需要找出最优策略以解决某种分配或组合问题。 2472可能涉及字符串处理或模式匹配,需要实现高效的...