博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Binary Tree Paths 二叉树路径
阅读量:6280 次
发布时间:2019-06-22

本文共 1412 字,大约阅读时间需要 4 分钟。

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来解,代码而很简洁,参见如下:

解法一:

class Solution {public:    vector
binaryTreePaths(TreeNode* root) { vector
res; if (root) dfs(root, "", res); return res; } void dfs(TreeNode *root, string out, vector
&res) { out += to_string(root->val); if (!root->left && !root->right) res.push_back(out); else { if (root->left) dfs(root->left, out + "->", res); if (root->right) dfs(root->right, out + "->", res); } }};

下面再来看一种递归的方法,这个方法直接在一个函数中完成递归调用,不需要另写一个dfs函数,核心思想和上面没有区别,参见代码如下:

解法二:

class Solution {public:    vector
binaryTreePaths(TreeNode* root) { if (!root) return {}; if (!root->left && !root->right) return {to_string(root->val)}; vector
left = binaryTreePaths(root->left); vector
right = binaryTreePaths(root->right); left.insert(left.end(), right.begin(), right.end()); for (auto &a : left) { a = to_string(root->val) + "->" + a; } return left; }};

本文转自博客园Grandyang的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
codevs——1842 递归第一次
查看>>
转给正在找工作的应届生 2013年各大小IT公司待遇
查看>>
某源码thread,socket研究4
查看>>
tomcat日志脚本
查看>>
mysql修改表、字段、库的字符集
查看>>
设置Serv-U FTP 支持被动模式连接 ,530错误等解决办法集锦
查看>>
zabbix3.0安装教程(环境)
查看>>
关于linux系统下批量修改文件名和后缀
查看>>
我和linux的第二十四天
查看>>
互联网公司的分布排行
查看>>
'latin-1' codec can't encode characters……
查看>>
查看aix系统故障记录收集信息
查看>>
博士生涯
查看>>
【OFFICE2010安装】Error 1406
查看>>
dsh 批量管理服务器
查看>>
centos7.3二进制安装mariadb
查看>>
吉林出差所见、所闻、所感
查看>>
RHEL7修改root用户密码
查看>>
mysqldump导出 timestamp类型数据 时区偏差8小时
查看>>
我的友情链接
查看>>