Binary Tree Paths
来源:互联网 发布:电脑软件打开乱码 编辑:程序博客网 时间:2024/05/16 18:01
Description
Given a binary tree, return all root-to-leaf paths.
For example, given the following binary tree:
1
/ \
2 3
\
5
All root-to-leaf paths are:
[“1->2->5”, “1->3”]
解题思路:题目要求找出从根节点到所有叶子节点的路径,使用dfs就可以很好的解决问题。关键是如何保存访问过的节点,开始我是用栈来实现dfs,并且建立了一个数组来保存所有节点的父节点的val值,因为只要只要访问到叶子节点时,就可以从叶子节点一路返回到根节点,这种办法行得通的前提是所有的节点的val值都不相同,否则就会出错。另一种方法是使用递归实现dfs,使用这种方法时,我是通过建立一个vector来保存访问过的节点。程序代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int>> result; //用来保存所有路径上的节点的val值 void dfs(TreeNode * root, vector<int> &path) { //path保存的是一条路径上的节点的val值 if (root == NULL) { return; } if(root -> left == NULL && root -> right == NULL) { path.push_back(root -> val); result.push_back(path); return; } path.push_back(root -> val); vector<int> temp1(path); vector<int> temp2(path); if (root -> left != NULL) dfs(root -> left, temp1); if (root -> right != NULL) dfs(root -> right, temp2); } vector<string> binaryTreePaths(TreeNode* root) { vector<int> path; dfs(root, path); vector<string> str; int size = result.size(); //路径的数目 for (int i = 0; i < size; i++) { int subsize = result[i].size(); string record; for (int j = 0; j < subsize; j++) { stringstream ss; string n_to_s; ss << result[i][j]; ss >> n_to_s; //把int转换为string record = record + n_to_s; if (j != subsize -1) record = record + "->"; //record是以字符串表示的路径 } str.push_back(record); } return str; }};
0 0
- Binary Tree Paths
- Leetcode: Binary Tree Paths
- [LeetCode] Binary Tree Paths
- [Leetcode]Binary Tree Paths
- leetcode:Binary Tree Paths
- Binary Tree Paths
- [leetcode] Binary Tree Paths
- 257 Binary Tree Paths
- Binary Tree Paths
- [LeetCode257] Binary Tree Paths
- Binary Tree Paths
- Binary Tree Paths
- Leetcode: Binary Tree Paths
- LeetCode:Binary Tree Paths
- leetcode Binary Tree Paths
- leetcode Binary Tree Paths
- LeetCode:Binary Tree Paths
- Binary Tree Paths
- php操作redis
- Android 图片库universal-image-loader(二)
- Leetcode4 Spiral Matrix II
- 图像处理---傅里叶变化基础
- MyBatis自动生成实体、DAO接口、Mapping映射文件
- Binary Tree Paths
- C语言基础笔记
- 【九度OJ】题目1195:最长&最短文本 解题报告
- LinkedHashMap和HashMap
- L1-007. 念数字
- 搭建SpringBoot-MyBatis-MyBatisGenerator项目
- [C语言]头文件之stdarg
- 女程序员中断一年半,难找工作
- BibTex相关