Leetcode: Binary Tree Paths
来源:互联网 发布:oracle sql优化 编辑:程序博客网 时间:2024/05/01 12:21
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"]
以前遇到过这个题,还真是面试的时候,业界一个大公司, http://blog.csdn.net/ymhhym/article/details/21326879。
递归的很好写,当时几分钟搞定,非递归的鼓捣了很久,最终也没真正写出来。
/** * 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> result; string path; getPath(root, result, path); return result; } void getPath(TreeNode* root, vector<string>& result, string path) { if (root == nullptr) { return; } if (!path.empty()) { path.append("->"); } path.append(to_string(root->val)); if (root->left == nullptr && root->right == nullptr) { result.push_back(path); } else { if (root->left != nullptr) { getPath(root->left, result, path); } if (root->right != nullptr) { getPath(root->right, result, path); } } } };
非递归的,采用后续遍历。
/** * 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> result; string path; TreeNode* prev = nullptr; stack<TreeNode*> nodes; while (root != nullptr || !nodes.empty()) { while (root != nullptr) { nodes.push(root); if (!path.empty()) { path.append("->"); } path.append(to_string(root->val)); root = root->left; } if (!nodes.empty()) { root = nodes.top(); if (root->right == nullptr || root->right == prev) { nodes.pop(); if (root->left == nullptr && root->right == nullptr) { result.push_back(path); } auto pos = path.rfind("->"); if (pos != string::npos) { path = path.substr(0, pos); } else { path = ""; } prev = root; root = nullptr; } else { root = root->right; } } } return result; } };
0 0
- Leetcode: Binary Tree Paths
- [LeetCode] Binary Tree Paths
- [Leetcode]Binary Tree Paths
- leetcode:Binary Tree Paths
- [leetcode] Binary Tree Paths
- Leetcode: Binary Tree Paths
- LeetCode:Binary Tree Paths
- leetcode Binary Tree Paths
- leetcode Binary Tree Paths
- LeetCode: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 -- leetcode
- LeetCode---Binary Tree Paths
- leetcode-Binary Tree Paths
- 原型的安装及使用
- 分析堆栈及_INTSIZEOF/va_list/va_start/va_arg/va_end
- 欢迎使用CSDN-markdown编辑器
- Netty LengthFieldBasedFrameDecoder
- UVa 227 - Puzzle
- Leetcode: Binary Tree Paths
- uva 1456 dp 求期望
- 复制一个Dialog后DoModal()返回-1
- 常量指针与指针常量
- Leetcode -- Insertion Sort List
- hdu 1061Rightmost Digit 模幂运算
- Linux下的调试工具
- 104Maximum Depth of Binary Tree
- 求最小的k个数