在二元树中找出和为某一值的所有路径
来源:互联网 发布:中世纪2全面战争mac版 编辑:程序博客网 时间:2024/06/01 11:07
题目:输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如输入整数22 和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12 和10, 5, 7。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如输入整数22 和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12 和10, 5, 7。
分析:需对树进行深度遍历,记录深度遍历过程中走过的路径的值的和,走到叶子节点判断是否与输入一致,如一致则打印
struct BSTreeNode
{
int value;
BSTreeNode *left;
BSTreeNode *right;
}
void printpath(int path[],int length)
{
for(int i=0;i<length;i++)
cout<<path[i];
}
//递归算法
void search(BSTreeNode *root,int sum,int top,int path[])
{
path[top++]=root->value; //记录路径
sum-=root->value;
if(root->left==null && root->right==null)
if(sum==0) printpath(path,top);
else
{
if(root->left!=null) search(root->left,sum,top,path);
if(root->right!=null) search(root->left,sum,top,path);
}
top--; //消除上一路径
sum-=root->value;
}
//非递归算法
void searchN(BSTreeNode *root,int sum,int top,int path[])
{
Stack <BSTreeNode>s=new Stack <BSTreeNode> ();
while(root!=bull || !isempty())
{
while(root!=null)
{
path[top++]=root->value;
sum-=root->value;
s.push(root);
root=root->left;
}
if(!isempty)
{
root=s.pop();
root=root->right;
if(root==null && sum==0)
{
printpath(path,top);
sum-=root->value;
top--;
}
}
}
}
0 0
- 在二元树中找出和为某一值的所有路径的个人代码
- 在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- No4、在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径-递归算法
- 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 算法讨论(三)---在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 算法题23 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- Eclipse使用段注释格式化代码后混乱情况解决
- 直接插入排序
- 64位win7中使用vs2013为python3.4安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat异常解决方案
- android选择图片或拍照图片上传到服务器(包括上传参数)
- 黑马程序员——基本数据类型对象包装类的最常见作用
- 在二元树中找出和为某一值的所有路径
- 数据结构和算法(三):简单栈实现
- @RequestMapping 用法详解之地址映射
- startUML-画类图
- 覆铜的利与弊
- 新旧 Hadoop MapReduce 框架比对
- 更有效的使用Visual Studio
- ios开发--启动页面的动画
- 1.4