当前位置: 首页> 财经> 创投人物 > 257、二叉树的所有路径

257、二叉树的所有路径

时间:2025/7/12 1:44:09来源:https://blog.csdn.net/qq_47258284/article/details/139781671 浏览次数:0次

给定一个二叉树,返回所有从根节点到叶子节点的路径。

说明: 叶子节点是指没有子节点的节点。

代码如下:

class Solution {
public:void traversal(TreeNode* cur, vector<int>& path, vector<string> &result){path.push_back(cur->val);if(cur->left ==NULL && cur->right ==NULL){string sPath;for(int i= 0; i<path.size()-1;i++){sPath += to_string(path[i]);sPath += "->";}sPath +=to_string(path[path.size()-1]);result.push_back(sPath);return;}if(cur->left){traversal(cur->left,path,result);path.pop_back();}if(cur->right){traversal(cur->right,path,result);path.pop_back();}}vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;vector<int>path;if(root == NULL) return result;traversal(root, path,result);return result;}
};

注意:

1、在递归函数传参是,用了vertor来记录路径,在之后做回溯pop的时候方便。

2、在写终止条件时,不判断是否为空节点,在找到叶子节点时就开始终止处理,这里使用vector 结构path来记录路径,所以要把vector 结构的path转为string格式,再把这个string 放进 result里。

3、在单层递归逻辑里,用到了回溯的思路,递归完,要做回溯,因为path 不能一直加入节点,它还要删节点,然后才能加入新的节点。

关键字:257、二叉树的所有路径

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: