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"]
深度优先遍历,返回每一条路径
AC代码:
class Solution { public: string intToString(int x) { stringstream ss; ss<<x; string res; ss>>res; return res; } string dequeToString(deque<int> origin) { deque<int>::iterator ite=origin.begin(); string res=intToString(*ite); ++ite; for(; ite!=origin.end(); ++ite) { res+="->"; res+=intToString(*ite); } return res; } void cal(TreeNode* root,vector<string> &res,deque<int> &temp) { if(root->left==NULL&&root->right==NULL) { temp.push_back(root->val); res.push_back(dequeToString(temp)); temp.pop_back(); return ; } temp.push_back(root->val); if(root->left) cal(root->left,res,temp); if(root->right) cal(root->right,res,temp); temp.pop_back(); } vector<string> binaryTreePaths(TreeNode* root) { vector<string> res; if(root==NULL) return res; deque<int> temp; cal(root,res,temp); return res; } };
其他Leetcode题目AC代码:https://github.com/PoughER/leetcode