标签:数据结构
本文出自:http://blog.csdn.net/svitter
题目4:二叉树
给出一颗无线的二叉树。树的每一个结点用一整数对标识。二叉树构造如下如果一个结点被标识为(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; }
数据结构课程设计题目四_二叉树,布布扣,bubuko.com
标签:数据结构
原文地址:http://blog.csdn.net/svitter/article/details/29364865