LintCode-二叉树的所有路径
来源:互联网 发布:厦门千象品牌策划 知乎 编辑:程序博客网 时间:2024/06/05 05:32
题目描述:
给一棵二叉树,找出从根节点到叶子节点的所有路径。
样例:
给出下面这棵二叉树:
1 / \2 3 \ 5
所有根到叶子的路径为:
[ "1->2->5", "1->3"]
做题思路:
题目要求在输出时,数组中输出的是一串路径,所以,在类内调用已写的递归函数,对递归函数进行编写:定义树的结点、数组对象和字符串。如果左子树和右子树都为空,则把根节点的值放入数组中输出,如果左子树的值不为空,则调用函数,把路径的结点值放入字符串中输出,如果右子树的值不为空,则调用函数,把路径的结点值放入字符串中输出,放入数组中,遍历完树之后,跳出递归。
关键代码:
class Solution {public: /** * @param root the root of the binary tree * @return all root-to-leaf paths */ vector<string> binaryTreePaths(TreeNode* root) { // Write your code here vector<string> v; if(root==NULL) return v; binarytree(root,v,to_string(root->val)); return v; } void binarytree(TreeNode *root,vector<string> &ve,string s) { if(root->left==NULL&&root->right==NULL) { ve.push_back(s); return; } if(root->left!=NULL) binarytree(root->left,ve,s+"->"+to_string(root->left->val)); if(root->right!=NULL) binarytree(root->right,ve,s+"->"+to_string(root->right->val)); }};
做题感想:其实刚开始这题并不太会,因为想用给定的这个函数直接编写递归,发现该函数中只有定义了一个结点,上网搜了很多答案都不懂,后来才看到一个类内编写了一个递归函数,把遍历完的路径转化成字符串储存进数组中,在该函数中调用递归函数。
0 0
- LintCode- 二叉树的所有路径
- lintcode----二叉树的所有路径
- lintcode,二叉树的所有路径
- lintcode二叉树的所有路径
- LintCode | 480. 二叉树的所有路径
- LintCode 二叉树的所有路径
- 二叉树的所有路径-LintCode
- LintCode-二叉树的所有路径
- lintcode二叉树的所有路径
- lintcode 二叉树的所有路径
- LintCode 二叉树的所有路径
- lintcode--二叉树的所有路径
- [LintCode]480.二叉树的所有路径
- 二叉树的所有路径-LintCode
- LintCode 480-二叉树的所有路径
- lintcode(480)——二叉树的所有路径
- lintcode binary-tree-paths 二叉树的所有路径
- lintcode——二叉树的所有路径
- Apache性能优化之MPM选择和配置
- 【代码质量管理工具】--使用sonarLint提高代码质量
- Error MSB3073: The command regsvr32 /s /c出错
- 纹理采样和过滤
- 第七届 山东省ACM Swiss-system tournament(归并思想)
- LintCode-二叉树的所有路径
- opengl 绘图模式比较
- sqoop 知识及安装配置说明--hadoop安装系列之四
- Linux下"undefined reference to ‘pthread_create’"问题解决
- 使用fbo离屏渲染绘制图片
- 数字组合
- c++ 指针详解
- HDU
- static对程序运行影响