lintcode——二叉树的所有路径
来源:互联网 发布:数控车用什么软件编程 编辑:程序博客网 时间:2024/06/01 09:17
1、题目
给一棵二叉树,找出从根节点到叶子节点的所有路径
给出下面这棵二叉树:
1 / \2 3 \ 5
所有根到叶子的路径为:
[ "1->2->5", "1->3"]
2、思路
先写了一个函数,该函数是在根节点不空时,开始寻找所有路径。当左右子树全空时,返回根节点的值;当左子树不空时,递归,开始在左子树上寻找所有路径;当右子树不空时,递归,开始在右子树上寻找所有路径;
注意:
①&path 传引用,相当于全局变量,在左子树找完所有路径后,右子树的路径会继续累加在path上;应该用 path,传值方式,相当于局部变量,这样在左子树找完路径后,右子树的path不包含左子树的。
②path+"->"+to_string(rootnode->left->val)
int类型强制转换成string类型。
string类型的字符如何串成一串,用相加。
3、代码
/**
* 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> v;
void FindAllPath(TreeNode *rootnode,string path) //根节点非空时找所有路径
{
if(rootnode->left==NULL && rootnode->right==NULL)
v.push_back(path);
if(rootnode->left!=NULL)
FindAllPath(rootnode->left,path+"->"+to_string(rootnode->left->val));
//将int型 的val转换成string,构成字符串用+
if(rootnode->right!=NULL)
FindAllPath(rootnode->right,path+"->"+to_string(rootnode->right->val));
}
vector<string> binaryTreePaths(TreeNode* root) {
// Write your code here
if(root==NULL)
return v;
else{
FindAllPath(root,to_string(root->val));
return v;
}
}
};
4、感想
一开始不懂怎么把int类型的转换成string类型的,借鉴了网上的一些做法才写出来了。
每条路径当到达叶子结点时结束,充分体现了传值和传引用的区别!!!!
- lintcode——二叉树的所有路径
- lintcode(480)——二叉树的所有路径
- LintCode- 二叉树的所有路径
- lintcode----二叉树的所有路径
- lintcode,二叉树的所有路径
- lintcode二叉树的所有路径
- LintCode | 480. 二叉树的所有路径
- LintCode 二叉树的所有路径
- 二叉树的所有路径-LintCode
- LintCode-二叉树的所有路径
- lintcode二叉树的所有路径
- lintcode 二叉树的所有路径
- LintCode 二叉树的所有路径
- lintcode--二叉树的所有路径
- [LintCode]480.二叉树的所有路径
- 二叉树的所有路径-LintCode
- LintCode 480-二叉树的所有路径
- lintcode binary-tree-paths 二叉树的所有路径
- hdu 1754 线段树区间最大值
- 题目1061:成绩排序
- c/c++ 内存使用指南 和实践指导
- 二、Git 安装
- Spring中JdbcTemplate对数据库操作时,测试类一直运行,不结束
- lintcode——二叉树的所有路径
- Timer的使用
- 面向对象语言和多态
- 【PHP】函数
- floyd算法 + 传递闭包 (poj3660Cow Contest)
- RandomAccessFile()的seek()方法
- oracle连接字符串
- adfaasdfdf
- 并发模型 精华一页纸