GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — leetcode/algorithms/cpp/binaryTreePaths/binaryTreePaths.cpp at master · haoel/leetcode Expand file tree/ Copy pathbinaryTreePaths.cppMore file actions 95 lines (85 loc) · 2.54 KB / Copy pathbinaryTreePaths.cppFile metadata and controls95 lines (85 loc) · 2.54 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 // Source : https://leetcode.com/problems/binary-tree-paths/ // Author : Calinescu Valentin, Hao Chen // Date : 2015-10-23 /*************************************************************************************** * * 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. * ***************************************************************************************/ /** * 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> TreePaths; void DFS(TreeNode* node, string answer) { answer += "->" + to_string(node->val); if(node->left == NULL && node->right == NULL) TreePaths.push_back(answer); else { if(node->left != NULL) DFS(node->left, answer); if(node->right != NULL) DFS(node->right, answer); } } vector<string> binaryTreePaths(TreeNode* root) { if(root != NULL) { DFS(root, ""); for(int i = 0; i < TreePaths.size(); i++) TreePaths[i].erase(TreePaths[i].begin(), TreePaths[i].begin() + 2); } return TreePaths; } }; // Another more clear DFS implementation class Solution { public: void binaryTreePathsHelper(TreeNode* root, vector<int> solution, vector<string>& result ) { if (!root) return; solution.push_back(root->val); //meet the leaf node, shape a path into the result if (root->left==NULL && root->right==NULL){ if(solution.size()>0){ stringstream ss; for(int i=0; i<solution.size(); i++){ ss << solution[i] << (i<solution.size()-1 ? "->":""); } result.push_back(ss.str()); } return; } binaryTreePathsHelper(root->left, solution, result); binaryTreePathsHelper(root->right, solution, result); } vector<string> binaryTreePaths(TreeNode* root) { vector<string> result; vector<int> solution; binaryTreePathsHelper(root, solution, result); return result; } }; |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |