二叉树中找出和为给定值得所有路径
来源:互联网 发布:阿甘起源哥谭网络 编辑:程序博客网 时间:2024/04/28 04:37
题目要求如下:
#include<iostream>#include<stdlib.h>#include<deque>using namespace std;struct TreeNode{int data;TreeNode *left;TreeNode *right;};//自定义asiII转int函数int my_atoi(char *p){int number = 0;if(p == NULL){cout<<"字符串为空"<<endl;return 0;}else{//跳过前面的空格while(isspace(*p) != 0)p++;//首先判断正负号bool isNeg = false;if(*p == '-'){isNeg = true;p++;}if(*p == '+')p++;while(*p >= '0' && *p <= '9'){number = number * 10 +(*p - '0');p++;}return isNeg ? -number : number;}}//创建二叉树void createTree(TreeNode *&root){char buffer[10];memset(buffer,0,10);cin.getline(buffer,9);int a = my_atoi (buffer);if(a == 0)root == NULL;else{root = new TreeNode();root -> data = a;root -> left = root -> right = NULL;createTree(root -> left);createTree(root -> right);}}void PrintPath(TreeNode *root, int sum,const int target){static deque<int> stack;if(root == NULL)return;if(sum + root->data == target){for(int i=0;i<stack.size();i++)cout<<stack[i]<<"->";cout<<root->data<<endl;return;}else if(sum + root->data >target){return;}else{stack.push_back(root->data);sum += root->data;PrintPath(root->left,sum,target);PrintPath(root->right,sum,target);sum -=root->data;stack.pop_back();}}int main(){TreeNode *root = NULL;createTree(root);PrintPath(root,0,22);system("pause");return 0;}
运行结果为:
0 0
- 二叉树中找出和为给定值得所有路径
- 找出二叉树中所有累加值为给定值的路径
- 在二元树中找出和为某一值得所有路径
- 在二叉树中找出和为某一值的所有路径
- 在二叉树中找出和为某一值的所有路径
- 【100题】二叉树中找出和为某一值的所有路径
- 在二叉树中找出和为某一值的所有路径
- 在二叉树中找出和为某一输入值的所有路径
- 在二叉树中找出和为某一值的所有路径
- 二叉树中找出和为某一值的所有路径
- 求出二叉树中找出和为某一值的所有路径
- 二叉树中找出和为某一值的所有路径
- 二叉树中,找出和为某值的所有路径
- 面试100题:4.在二叉树中找出和为某一值的所有路径
- 笔试题:在二叉树中找出和为某一值的所有路径
- 第4题:在二叉树中找出和为某一值的所有路径
- 在二叉树中找出和为某一值的所有路径
- [面试题]在二叉树中找出和为某一值的所有路径
- VS2005 Manifest 配置问题总结
- Redmine 安装 Testlink Link Plugin
- 黑马程序员_关于JAVA 中IO流中重难点知识要点总结
- oracle的转义字符
- 带缓冲I/O 和 不带缓冲I/O详解
- 二叉树中找出和为给定值得所有路径
- HDU 1864 最大报销额
- oracle 10g 在win7下安装,提示程序异常终止,发生未知错误
- 图像去模糊资源整理
- 关于二维数组名是什么?
- Codeviz生成linux内核的函数调用图
- 小黑小波比.在Ubuntu安装****tar.gz文件包
- 项目配置——添加第三方资源
- oracle基础详解(一)Windows_7安装oracle和简单配置详解