Binary Tree Paths(二叉树的路径)
来源:互联网 发布:自己动手写网络爬虫 编辑:程序博客网 时间:2024/05/18 01:55
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”]
1.个人分析
采用先序遍历对二叉树进行遍历,在遍历的同时将经过的节点保存到结果集中去。
2.个人解法
void findPath(TreeNode *root, vector<string> &res, string path){ if(!root) return; if(root->left == NULL && root->right == NULL){ if(path.empty()){ string str = to_string((long long)root->val); path.append(str); } else { string pointer = "->"; path.append(pointer); string str = to_string((long long)root->val); path.append(str); } res.push_back(path); } if(path.empty()){ string str = to_string((long long)root->val); path.append(str); } else { string pointer = "->"; path.append(pointer); string str = to_string((long long)root->val); path.append(str); } findPath(root->left, res, path); findPath(root->right, res, path);}vector<string> binaryTreePaths(TreeNode* root) { vector<string> res; string path; findPath(root, res, path); return res;}
3.参考解法
void dfs(TreeNode* root, vector<string> &result,string branch){ if (!root->left && !root->right){ result.push_back(branch); } if (root->left) dfs(root->left, result, branch + "->" + to_string(root->left->val)); if (root->right) dfs(root->right, result, branch + "->" + to_string(root->right->val));} vector<string> binaryTreePaths(TreeNode* root) { vector<string> result; if (!root) return result; dfs(root, result, to_string(root->val)); return result; }
4.总结
参考解法采用的是DFS,也就是后序遍历的方式进行路径查找,相比先序遍历代码更加简洁。
PS:
- 题目的中文翻译是本人所作,如有偏差敬请指正。
- 其中的“个人分析”和“个人解法”均是本人最初的想法和做法,不一定是对的,只是作为一个对照和记录。
0 0
- Binary Tree Paths(二叉树的路径)
- Binary Tree Paths (二叉树路径遍历)
- lintcode binary-tree-paths 二叉树的所有路径
- 257. Binary Tree Paths 二叉树的路径
- 257. Binary Tree Paths | 二叉树的路径
- 【Leetcode】257 Binary Tree Paths 二叉树的路径
- LeetCode OJ 之 Binary Tree Paths(二叉树路径)
- 257. Binary Tree Paths(打印二叉树所有路径)
- Tree----- 257. Binary Tree Paths(二叉树从根节点开始的所有路径)
- Binary Tree Paths 二叉树的路径(含创建树的代码)
- 480.Binary Tree Paths-二叉树的所有路径(容易题)
- 257. Binary Tree Paths (求二叉树中所有根到叶子的路径)
- 257. Binary Tree Paths打印二叉树路径
- Binary Tree Paths 二叉树所有从跟节点到叶子节点的路径
- Binary Tree Paths 二叉树遍历
- 【二叉树】257. Binary Tree Paths
- leetcode解题之57. Binary Tree Paths&129. Sum Root to Leaf Numbers Java版 (二叉树路径)
- 【Leetcode】Binary Tree Paths 二叉树根结点到所有叶子结点的路径
- 把自己的库共享给别人
- OpenStack Heat AutoScaling
- node链接MongoDB
- laravel的搜索分页
- HBase客户端操作
- Binary Tree Paths(二叉树的路径)
- POJ2718 贪心算法
- Java中关于字段名字的修改
- ubuntu蓝牙音响配对成功但在声音设置中无法设置 解决
- dpi px dp计算公式
- 在O(n)时间内查找数组内第k小的数
- POJ1979 dfs
- oracle数据库_实例_用户_表空间之间的关系
- CCF 201612-4 交通规划(spfa)