输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
2016-10-24 13:47
351 查看
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
//
//
#include "stdafx.h" #include "stdafx.h" #include<iostream> #include<vector> #include<algorithm> #include<numeric> #include<list> #include<iterator> #include<queue> #include<stack> #include<algorithm> using namespace std; struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; class Solution { public: int sum = 0; vector<int> path; vector <vector<int>> paths; int flag = 0; vector<vector<int> > FindPath(TreeNode* root, int expectNumber) { paths = {}; if (root != NULL) { FindOnePath(root, expectNumber); } ///*if (root != NULL) FindOnePath(root, expectNumber); // //else paths = {};*/ // return paths; } void FindOnePath(TreeNode* &root, int expectNumber) { if (root == NULL) { if(flag==0) { sum = 0; for (auto it = path.begin(); it != path.end(); ++it) sum += *it; if (sum == expectNumber) { paths.push_back(path); } flag = 1; } else { flag = 0; } return; } else { path.push_back(root->val); cout << "push:"<<root->val<<endl; FindOnePath(root->left, expectNumber); //第二次犯这个错误了,记住这里调用的是FindOnePath,而不是FindPath FindOnePath(root->right, expectNumber); path.pop_back(); cout << "pop :" << root->val << endl; } } void CreateBiTree(TreeNode* &T) //这里的引用 & 必须,要不然会报未初始化变量 { int num = 0; cin >> num; if (num == 0) return; else { T = new TreeNode(num); CreateBiTree(T->left); CreateBiTree(T->right); } } }; int main() { Solution so; TreeNode *T; so.CreateBiTree(T); cout << "创建二叉树成功!"<<endl; vector<vector<int>> vec; vec = so.FindPath(T,1); for (auto it = vec.begin(); it != vec.end(); it++) { for (auto i = (*it).begin(); i != (*it).end(); i++) cout << *i << " "; cout << endl; } return 0; }
相关文章推荐
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径
- java 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的结点形成一条路径。
- 面试题:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。
- 每天学习一算法系列(6) (输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径)
- <仅是自己做笔记。。。系列-4>输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径
- 每天学习一算法系列(6) (输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径)
- flag2在二元树中找出和为某一值的所有路径 题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数
- 输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。
- 输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径(剑指offer)
- java实现输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径
- 剑指offer_输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径
- 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
- 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
- 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
- 剑指offer 打印出二叉树中结点值的和为输入整数的所有路径。
- 给定一棵二叉树,每个结点包含一个值。打印出所有满足以下条件的路径: 路径上结点的值加起来等于给定的一个值。注意:这些路径不必从根结点开始。
- 《剑指Offer》面试题:打印出二叉树中结点值的和为输入整数的所有路径