数据结构课程设计题目四_二叉树
2014-06-08 14:12
357 查看
本文出自:http://blog.csdn.net/svitter
题目4:二叉树
给出一颗无线的二叉树。树的每一个结点用一整数对标识。二叉树构造如下
树根被标识为(1, 1);
如果一个结点被标识为(a, b), 则其左孩子被标识为(a+b,b),右孩子被标识为(a, a+b)。现在给出某一结点(a, b),求树根到该结点的最短路径,并且同时求出从树根出发向左走和向右走的次数。建议完***数1人。
注:此处使用了STL_stack库函数,是不允许的,我图方便。
题目4:二叉树
给出一颗无线的二叉树。树的每一个结点用一整数对标识。二叉树构造如下
树根被标识为(1, 1);
如果一个结点被标识为(a, b), 则其左孩子被标识为(a+b,b),右孩子被标识为(a, a+b)。现在给出某一结点(a, b),求树根到该结点的最短路径,并且同时求出从树根出发向左走和向右走的次数。建议完***数1人。
注:此处使用了STL_stack库函数,是不允许的,我图方便。
//============================================================================ // Name : BinaryTree.cpp // Author : Vit // Version : 1.0 // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <stdio.h> #include <stack> using namespace std; struct path { int a; int b; path(int c, int d):a(c), b(d){} void print() { printf(" (%d, %d)", a, b); } }; int main() { int left, right; int a, b; stack <path> s; while(~scanf("%d%d", &a, &b )) { if(a == b && a != 1) { printf("impossible\n"); continue; } right = left = 0; while(a != b) { if(a > b) { left++; s.push(path(a,b)); a = a - b; } else { right++; s.push(path(a,b)); b = b - a; } } printf("left_num: %d\nright_num:%d\n", left ,right); printf("(1,1)"); while(!s.empty()) { path b = s.top(); s.pop(); b.print(); } printf("\n\n"); } return 0; }
相关文章推荐
- 数据结构课程设计题目四_二叉树
- 数据结构课程设计题目四_二叉树
- 数据结构课程设计-----题目1 程序设计报告(简版)
- 数据结构课程设计————题目2
- 数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)
- 数据结构课程设计报告 二叉树的应用
- 数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)
- 数据结构课程设计——题目四电话模拟
- 数据结构课程设计题目
- 数据结构课程设计 题目 1 (活期储蓄管理系统)
- 数据结构课程设计~二叉树的应用(二叉树)
- 数据结构课程设计 题目1 活期储蓄程序
- 数据结构课程设计题目3
- 数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)
- 数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)
- 数据结构课程设计--------文法分析中推导的建立(第一天进度)
- 数据结构课程设计---最长公共子串
- 数据结构课程设计一元多项式的相加和相乘
- 数据结构课程设计(2)
- 数据结构课程设计---学生信息管理系统