《剑指offer》——二叉树中和为某一值的路径
来源:互联网 发布:windows8如何卸载软件 编辑:程序博客网 时间:2024/05/16 10:17
题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始向下一直到叶子结点所经过的所有结点形成一条路径。
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};void TreePath(TreeNode* root, //当前结点 vector<int> &stack, //辅助栈,用于存放当前路径 vector<vector<int>> &path,//用于存放多条路径的二维数组 int expectNumber, //给定路径和 int sum) //当前路径和{ sum += root -> val; //访问当前结点,更新当前路径和 stack.push_back(root -> val); //更新当前路径 if(sum == expectNumber) //如果当前路径和等于给定路径和 if(root -> left == NULL && root -> right == NULL)//且当前结点为叶子结点 path.push_back(stack); //将当前路径存入二维数组path中 if(root -> left) //如果当前结点有左结点,递归遍历其子结点 TreePath(root -> left, stack, path, expectNumber, sum); if(root -> right) //如果当前结点有右结点,递归遍历其子结点 TreePath(root -> right, stack, path, expectNumber, sum); stack.pop_back(); //在每次返回到父结点之前,在当前路径上删除当前结点}/*将符合条件的所有路径存入二维数组path并返回*/vector<vector<int>> FindPath(TreeNode* root,int expectNumber){ vector<vector<int>> path; if(root == NULL) //如果输入空的二叉树,则返回空的二维数组 return path; int sum = 0; vector<int> stack; //辅助栈,用于存放当前的路径 TreePath(root, stack, path, expectNumber, sum); return path;}
0 0
- 剑指offer:二叉树中和为某一值的路径
- 【剑指offer】二叉树中和为某一值的路径
- 剑指offer--二叉树中和为某一值的路径
- 《剑指offer》二叉树中和为某一值的路径
- 【剑指Offer】二叉树中和为某一值的路径
- 剑指Offer--二叉树中和为某一值的路径
- 剑指offer:二叉树中和为某一值的路径
- 剑指offer 二叉树中和为某一值的路径
- 剑指offer:二叉树中和为某一值的路径
- [剑指offer]二叉树中和为某一值的路径
- 《剑指offer》-二叉树中和为某一值的路径
- 剑指offer 二叉树中和为某一值的路径
- 【剑指offer】二叉树中和为某一值的路径
- 剑指offer|二叉树中和为某一值的路径
- 《剑指offer》二叉树中和为某一值的路径
- 剑指offer 二叉树中和为某一值的路径
- 剑指Offer:二叉树中和为某一值的路径
- 剑指offer-二叉树中和为某一值的路径
- 数据层的多租户浅谈
- Android之MediaPlayer的框架源码分析
- 思考数据可视化
- Html 增加icon图标
- Java正确URL解码方式:URLDecoder.decode
- 《剑指offer》——二叉树中和为某一值的路径
- HttpClient请求服务器 get post
- C#编程的注意事项
- 使用gradle编译:重复jar包导致的错误Error:'...jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2
- 005Longest Palindromic Substring (C)
- jsp页面通过ajax取值/展示数据及分页显示
- java 计算HH:mm:ss
- Android相关工具分类汇总
- 186,NSRunLoop运行循环