1:问题描述:
给一棵二叉树,找出从根节点到叶子节点的所有路径。
给出下面这棵二叉树:
1
/ \
2 3
\
5
所有根到叶子的路径为:
[
"1->2->5",
"1->3"
]
根据前序遍历的思路,将从根结点到每一个叶子结点的路径全都插入到向量中去。
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> result;
void getPaths(TreeNode* node,string path) {
if(node->left==NULL && node->right==NULL) { //左右子树为空 路径寻找完成 增加至数组中
result.push_back(path);
}
if(node->left!=NULL) { //递归遍历左子树 当前路径添加左孩子结点
getPaths(node->left,path+"->"+to_string(node->left->val));
}
if(node->right!=NULL) { //递归遍历右子树
getPaths(node->right,path+"->"+to_string(node->right->val));
}
}
//获取二叉树路径
vector<string> binaryTreePaths(TreeNode* root) {
if(root==NULL)
return result;
getPaths(root, to_string(root->val)); //to_string整数转换为字符串
return result;
}
};
4:解题感想;
这个题我坦白就是自己在实验课上做了两节课,自己的代码一直就是不过,自己就一直改不过来,最后下课了,老师让走的时候,我就在网上复制粘贴了别人的代码,自己也没看,也没钻研别人的代码的意思,就复制粘贴了,自己最近重新看了看,通过这个题学到了很多新知识,如何在C++中将整数转化成字符串,自己还需整理整理二叉树这个专题,感觉自己做的很不好。