求根结点到指定结点的路径
来源:互联网 发布:淘宝营销手段 编辑:程序博客网 时间:2024/04/27 17:00
Description
二叉树采用二叉链表存储结构进行存储,需要输出从二叉树的树根到指定结点的完整路径。按照给出的先序序列根据教材中算法6.4所示的算法建立二叉链表。二叉树中每个结点的数据都不相同。
Input
包含多组测试数据。
每组测试数据的第一行给出二叉树的先序遍历序列(结点数至少1个,不超过100个),用于建立二叉链表存储的二叉树。
第二行一个整数m,表示有m个结点需要输出从根节点到它自己的路径。
接下来m行,每行一个字符c,表示需要输出从根节点到本结点的路径。
Output
每组数据输出m行,每行为一个从根节点到对应结点之间的路径。
Sample Input
ABC^^DE^G^^F^^^
3
A
D
G
3
A
D
G
Sample Output
AABD
ABDEG
分析:首先要建立一个二叉树吧,然后慢慢的找= =。从根结点粗发,用一个容器vector把找过的点放进去,找到了就输出返回,没找到再依次寻找左右子树~
参考代码:
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<string>#include<algorithm>#include<stack>#include<queue>#include<map>#include<vector>#include<iostream> using namespace std;typedef struct BiTNode{ char d; struct BiTNode *l; struct BiTNode *r;}*BiTree,BiTreeNode;char ch;bool flag; void CreateBiTree( BiTree &T){ char tmp; if( flag) scanf("%c",&tmp); else { tmp = ch; flag = true; } if( tmp == '^') T = NULL; else { T = new BiTreeNode; T->d = tmp; CreateBiTree( T->l); CreateBiTree( T->r); } } void findpath( BiTree &T, char x, vector<int> &v){ if( T == NULL) return; v.push_back( T->d); if( T->d == x) { flag = 1; for( int i = 0; i < v.size(); i++) putchar(v[i]); putchar(10); return; } findpath( T->l, x, v); findpath( T->r, x, v); v.pop_back(); } int main(){ while( ~scanf("%c",&ch)) { if( ch == '\n') continue; BiTree T = NULL; flag = false; CreateBiTree( T); int n; scanf("%d",&n); char x; for( int i = 1; i <= n; i++) { scanf(" %c",&x); vector<int> v; findpath( T,x,v); //putchar(10); } } return 0;}
1 0
- 求根结点到指定结点的路径
- 求根节点到树中任一结点的路径
- 插入新结点到指定结点的指定位置
- 打印从根结点到叶子结点的路径(递归)
- 二叉树根结点到任意结点的路径
- 树根结点到r所指结点之间的路径
- 打印二叉树根结点到所有叶子结点的路径
- 根结点到所有叶子结点的路径问题
- 树中祖先结点到后代结点的路径
- c++输出二叉树叶子结点并输出叶子结点到根结点的路径长度
- wustoj(二叉树根节点到指定结点的路径-非递归算法)
- 求根结点到每个叶子节点的逆序列【后序遍历非递归的应用】
- 二叉树中根结点到某节点的路径(求某结点的所有祖先)
- 求赋权图中一个结点到所有结点的最短路径的长度
- 求赋权图中一个结点到所有结点的最短路径的长度
- POJ 2499 求二叉树结点到根结点的路径长度 递归 二叉树
- !求二叉树中从根结点到叶子结点的路径
- 输出二叉树中所有从根结点到叶子结点的路径
- 剑指:矩形覆盖
- 数据库设计一对多、多对多关系
- swift 字符串拼接、截取
- Merge k Sorted Lists
- vmware虚拟机安装XCode进行iPhone真机调试
- 求根结点到指定结点的路径
- mysql 创建索引和删除索引
- opencv gpu cuda项目整理
- html开端
- Javascript 原型中的哲学思想 __proto__和prototype
- jQuery 对象与 JavaScript DOM 对象
- AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?
- Android 布局 & 一些控件
- ubuntu设置超级用户的密码