【二叉树】257. Binary Tree Paths
来源:互联网 发布:linux ping脚本 编辑:程序博客网 时间:2024/06/16 00:57
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"]
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
一道和深搜、树有关的题
注意to_string的用法,比较棘手的地方是字符串必须最后压进ans里:
/** * 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<string> binaryTreePaths(TreeNode* root) { vector<string> ans; if(!root)return ans; dfs(ans,root,to_string(root->val)); return ans; } void dfs(vector<string>& ans,TreeNode* root,string str){ if(!root->left&&!root->right){ ans.push_back(str); } if(root->left)dfs(ans,root->left,str+"->"+to_string(root->left->val)); if(root->right)dfs(ans,root->right,str+"->"+to_string(root->right->val)); }};
用广度优先也可以,需要两个队列:
/** * 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<string> binaryTreePaths(TreeNode* root) { queue<TreeNode*> q; queue<string> str_q; vector<string> ans; if(!root)return ans; q.push(root);//enqueue str_q.push("");//enqueue while(!q.empty()){ TreeNode* helper=q.front(); string tmp=str_q.front(); q.pop();//dequeue str_q.pop();//dequeue if((!helper->left)&&(!helper->right)) ans.push_back(tmp+to_string(helper->val)); if(helper->left){ q.push(helper->left); str_q.push(tmp+to_string(helper->val)+"->"); } if(helper->right){ q.push(helper->right); str_q.push(tmp+to_string(helper->val)+"->"); } } return ans; }};广度优先的话这样会更清晰:
/** * 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<string> binaryTreePaths(TreeNode* root) { queue<TreeNode*> q; queue<string> str_q; vector<string> ans; if(!root)return ans; q.push(root);//enqueue str_q.push(to_string(root->val));//enqueue while(!q.empty()){ TreeNode* helper=q.front(); string tmp=str_q.front(); q.pop();//dequeue str_q.pop();//dequeue if((!helper->left)&&(!helper->right)) ans.push_back(tmp); if(helper->left){ q.push(helper->left); str_q.push(tmp+"->"+to_string(helper->left->val)); } if(helper->right){ q.push(helper->right); str_q.push(tmp+"->"+to_string(helper->right->val)); } } return ans; }};
阅读全文
0 0
- 【二叉树】257. Binary Tree Paths
- 257. Binary Tree Paths 二叉树的路径
- 257. Binary Tree Paths(打印二叉树所有路径)
- 257. Binary Tree Paths | 二叉树的路径
- 257. Binary Tree Paths打印二叉树路径
- Binary Tree Paths 二叉树遍历
- Binary Tree Paths (二叉树路径遍历)
- Tree----- 257. Binary Tree Paths(二叉树从根节点开始的所有路径)
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 257. Binary Tree Paths
- 前端小知识
- 《Linux设备驱动程序 第三版》,snull源码,linux-2.6.10
- redis info详解
- cmake链接依赖
- 安装VM的问题:此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
- 【二叉树】257. Binary Tree Paths
- Java线程问题
- 利用let's encrypte生成证书时,报“setuptools pkg_resources pip wheel ……”错误解决办法
- shell中if做比较
- 仿微信swipebacklayout侧滑界面
- Java最近时间处理类
- Netty源码解读(二)Netty中的buffer
- MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间
- 项目中引入log4j