二元树求某一值路径。
来源:互联网 发布:想给淘宝店铺取个名字 编辑:程序博客网 时间:2024/06/05 00:38
描述:
请写一个程序创建一棵二元树,并按照一定规则,输出二元树根节点到叶子节点的路径。规则如下:
从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条路径上的所有节点。从根节点遍历树时,请请按照左到右遍历,即优先访问左子树的节点。
比如下面一些转化的例子:
输入"10,5,12,4,7"值,构造的树如下(注意:构造二元树时,需要从上到下一层一层的,按照从左到右的顺序进行构造)
1) 10
2) 10
/
5
3) 10
/\
5 12
4) 10
/\
5 12
/
4
5) 10
/\
5 12
/\
4 7
如果当前我们设置的“路径和”为19,那么输出结果为:"10,5,4$",如果当前我们设置的值为22,那么输出结果为:"10,5,7$10,12$",$字符表
示结尾。如果没有找到路径和为设置的值的路径,输出'\0',即无显示
知识点: 题目来源: 内部整理 练习阶段: 中级 运行时间限制:无限制内存限制:无限制输入:
输入路径和
输入树各节点值
输出:满足条件的路径上的所有节点
样例输入:1910,5,12,4,7样例输出:
10,5,4$
使用数组,可以简单的解决这个问题,但是错误出现在没有从左子树遍历,即dfs,改进,直接从左往又,获得其叶子节点,首先获得最左端的叶子节点,使用a * 2 + 1,获得最外层,节点,然后获得第二节点,处理得到第二层最左端叶子节点,由此一次计算得到由左向右遍历的结果。
void main(){int tree[1001];for(int i = 0 ; i < 1001; i ++)tree[i] = 0 ;int values, site;//cout<< -1/2; w为0 。cin>>values;string str,buff;cin>>str;int num = 0;while(true){site = str.find(",");if(site == str.npos)break;buff = str.substr(0,site);tree[num++] = atoi( buff.c_str());str = str.substr(site + 1);}tree[num++] = atoi( str.c_str());//此应该为完全二叉树int ends = 0;int starts = 0;int path = 0;string outputs[100];int outends[100];int outNum = 0;string output;while(ends < num){if(ends * 2 + 1 >= num ){//为根节点starts = ends;path = tree[starts];output = myToString( tree[starts] );while(starts > 0){starts = (starts - 1 ) / 2;path += tree[starts];output = myToString( tree[starts] ) +',' + output;}output += "$";if(path == values){outputs[outNum] = output;outends[outNum++] = ends; }}ends ++;}if(outNum == 0 )cout<<'\0'<<endl;else{int lefts = 0;while((lefts*2 +1) <= num){lefts = lefts*2+1;}for(int j = 0; j < outNum;j++)if( outends[j] > lefts)cout<<outputs[j];for(int j = 0; j < outNum;j++)if( outends[j] < lefts)cout<<outputs[j];cout<<endl;}}
0 0
- 二元树求某一值路径。
- 二元树中和为某一值的所有路径
- 二元树中和为某一值的所有路径[数据结构]
- 二元树中和为某一值的所有路径
- 二元树中和为某一值的所有路径
- 二元树中和为某一值的所有路径[数据结构]
- 二元树中和为某一值的所有路径[数据结构]
- 找出二元树中和为某一值的所有路径
- 二元树中和为某一值的所有路径
- 二元树中和为某一值的所有路径
- 二元树中和为某一值的所有路径
- 二元查找树-- 在二元树中找到和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- No4、在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- Linux TomCat 解决80端口启动
- More Effective中auto_ptr实现
- hibernate的saveOrUpdateAll与Jdbc的executeBatch
- 2014年360校园招聘笔试题,干货分享
- NYOJ-A*B Problem II
- 二元树求某一值路径。
- centos 7 安装音频视频解码器
- Windows 各种计时函数总结
- QStandardItemModel简介
- struts2 action向jsp传值
- 应用程序开发总结(9)--表单自动完成
- C++ primer 第五版 中文版 练习 10.2 个人code
- Mybatis获取插入记录的自增长ID
- libcouchabase和libevent的恩怨