Path Sum II
来源:互联网 发布:json key value 数组 编辑:程序博客网 时间:2024/05/21 07:53
Desciption:
Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum.
For example: Given the below binary tree and sum = 22,
return
代码:
#include <iostream>#include <vector>#include <stack>#include <algorithm>#define Elementype intusing namespace std;int index = 0;typedef struct TreeNode //树结点{ Elementype val; TreeNode *left; TreeNode *right; TreeNode(Elementype x) : val(x), left(nullptr), right(nullptr) {}} *Tree;//使用先序遍历创建创建二叉树void MakeBinaryTree(Tree &T, Elementype value[]){ Elementype c = value[index++]; if (c == '#') T = nullptr; else { T = new TreeNode(c); MakeBinaryTree(T->left, value); MakeBinaryTree(T->right, value); }}//先序遍历void preOrderTraversal(Tree root){ stack<Tree> sk; Tree p = root; if (p) sk.push(p); while (!sk.empty()) { p = sk.top(); cout << p->val<<" "; sk.pop(); if (p->right) sk.push(p->right); if (p->left) sk.push(p->left); }}void pathSum(Tree root, int sum, vector<vector<int>> &result, vector<int> curVec){ if (!root) return; curVec.push_back(root->val); if (root->left == nullptr && root->right == nullptr && sum == root->val) result.push_back(curVec); pathSum(root->left, sum - root->val, result, curVec); pathSum(root->right, sum - root->val, result, curVec);}vector<vector<int>> pathSum(Tree root, int sum){ vector<vector<int>> result; //保存结果 vector<int> curVec; //当前查找的路径 pathSum(root, sum, result, curVec); return result;}int main(){ Tree root = nullptr; //根结点 Elementype data[] = { 5, 4, 11, 7,'#','#',2,'#','#','#', 8, 13, '#', '#', 4, 5,'#','#', 1,'#','#'}; MakeBinaryTree(root, data); cout << "先序遍历: "; preOrderTraversal(root); cout << endl; int sum = 22; vector<vector<int>> path = pathSum(root, sum); for (auto i : path) { cout << "路径有: "; for (auto j : i) cout << j << " "; cout << endl; } system("pause"); return 0;}
测试:
0 0
- LeetCode: Path Sum II
- LeetCode Path Sum II
- [Leetcode] Path Sum II
- LeetCode: Path Sum II
- Path Sum II
- [LeetCode] Path Sum II
- 【leetcode】Path Sum II
- [113]Path Sum II
- Path Sum II
- Path Sum II
- [LeetCode]Path Sum II
- Path Sum II
- Path Sum II
- [Leetcode]Path Sum II
- [leetcode]Path Sum II
- Path Sum II
- Leetcode: Path Sum II
- Path Sum II
- C++ STL算法系列6---copy函数
- android广播用法
- 堆排
- hibernate 多查询or的用法
- 文章标题
- Path Sum II
- iOS开发之原来Runtime的黑魔法这么厉害
- poj 3104 Drying 二分答案
- Convolutional neural networks(CNN) (十一) Convolution and Pooling Exercise
- Vector小记
- MYSQL下载安装配置卸载图文教程
- Windows下用脚本批量重命名文件
- 《Windows核心编程》之“内核对象同步”
- Java四种内部类