二叉树的所有路径
题目链接:http://www.lintcode.com/en/problem/binary-tree-paths/
题目描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。
代码实现采用分治算法,使用C++11新特性to_string方法很方便。代码如下:
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: the root of the binary tree
* @return: all root-to-leaf paths
*/
vector<string> binaryTreePaths(TreeNode * root) {
//递归的出口
if(NULL == root){
return vector<string>();
}
if(NULL == root->left && NULL == root->right)
{
string x = to_string(root->val);
return vector<string>{x};
}
vector<string> result;
//递归的拆解
vector<string> left = binaryTreePaths(root->left);
vector<string> right = binaryTreePaths(root->right);
//合并
for(auto& s : left)
result.push_back(to_string(root->val) + "->" + s);
for(auto& s : right)
result.push_back(to_string(root->val) + "->" + s);
return result;
}
};