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.
Subscribe to see which companies asked this question
/** * 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: void getDfsPaths(vector<string>& result, TreeNode* node, string strpath) { if(!node->left && !node->right){//叶子 result.push_back(strpath); return ; } if(node->left) getDfsPaths(result, node->left, strpath+"->"+to_string(node->left->val)); if(node->right) getDfsPaths(result, node->right, strpath+"->"+to_string(node->right->val)); } vector<string> binaryTreePaths(TreeNode* root) { vector<string> ret; if(!root) return ret; getDfsPaths(ret, root, to_string(root->val)); return ret; } };
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50493936
原作者博客:http://blog.csdn.net/ebowtang
<LeetCode OJ> 257. Binary Tree Paths
原文:http://blog.csdn.net/ebowtang/article/details/50493936