当前位置: 首页 > wzjs >正文

邢台网站建设多少钱湖南百度seo

邢台网站建设多少钱,湖南百度seo,网站超市,唐河网站制作公司257. 二叉树的所有路径 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [1,2,3,null,5] 输出:["1->2->5",&quo…

257. 二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]

示例 2:

输入:root = [1]
输出:["1"]

提示:

  • 树中节点的数目在范围 [1, 100]
  • -100 <= Node.val <= 100

 解法一:全局变量path来存放

使用dfs先将每条路径存储在一个vector中,最后再从vector转入string中。

为什么使用vector?因为在dfs操作的时候使用的是全局变量temp来记录每次的路径元素,使用vector可以很容易的进行push pop 操作,其实使用string temp也可以,不过会比较麻烦。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<string> res;vector<string> binaryTreePaths(TreeNode* root) {PreOrder(root);// Print();for(int i = 0; i < ret.size(); i++){string temp;for(int j = 0; j < ret[i].size(); j++){if(j > 0)temp += "->";temp += to_string(ret[i][j]);}res.push_back(temp);}return res;}vector<vector<int>> ret;vector<int> temp;void PreOrder(TreeNode* root){if(root == nullptr)return;temp.push_back(root->val);if(root->left == nullptr && root->right == nullptr){ret.push_back(temp);}PreOrder(root->left);PreOrder(root->right);temp.pop_back();}void Print(){for(int i = 0; i < ret.size(); i++){for(int j = 0; j < ret[i].size(); j++)cout<<ret[i][j]<<" ";cout<<endl;}}
};

解法二:path放入函数头上进行传参

在进行dfs操作时候分为俩种情况  叶子节点 和  非叶子节点

访问到叶子结点时,说明path中存放了一条合理的路径,我们直接将其放入res结果即可,在函数返回的时候path中之前新插入的元素随着栈帧的返回自行进行pop,省略了我们需要进行pop这一步骤

class Solution {
public:vector<string> res;vector<string> binaryTreePaths(TreeNode* root) {string path;dfs(root, path);return res;}void dfs(TreeNode* root, string path){if(root == nullptr)return;if(root->left == nullptr && root->right == nullptr){path += to_string(root->val);res.push_back(path);return;}else{path += to_string(root->val); //相同的操作可以提前放判断之前path += "->";    // 前面没有return可以直接放在判断之后}dfs(root->left, path);dfs(root->right, path);}
};

优化后:

class Solution {
public:vector<string> res;vector<string> binaryTreePaths(TreeNode* root) {string path;dfs(root, path);return res;}void dfs(TreeNode* root, string path){if(root == nullptr)return;path += to_string(root->val);if(root->left == nullptr && root->right == nullptr){res.push_back(path);return;}path += "->";dfs(root->left, path);dfs(root->right, path);}
};

http://www.dtcms.com/wzjs/431514.html

相关文章:

  • 如何做网站内容架构分析青岛网站优化公司
  • 岳阳做网站费用常见的网络推广方式
  • 做网站接项目常用的搜索引擎有哪些?
  • app 设计网站建设百度搜索高级搜索技巧
  • 网站开发速成培训机构百度下载app下载安装
  • 网站建设 运营网站工具查询
  • 做AI免费网站网站排名前十
  • 做单页面网站今日刚刚发生新闻事件
  • 广安北京网站建设淘宝营销推广方案
  • wordpress站标签也打不开全网优化哪家好
  • logo在线设计网站网站推广费用一般多少钱
  • 部队网站设计chrome 谷歌浏览器
  • 网站上的付费文章怎么做搜外seo
  • 服务器租用后怎么使用结构优化设计
  • 建网站的要求网站推广途径
  • 网站开发后的经验总结百度allin 人工智能
  • 网络建站公司如何做市场免费网站收录网站推广
  • 做网站能接到项目工程吗冬镜seo
  • 国外 平面设计网站seo综合查询工具可以查看哪些数据
  • 在线心理健康网站建设比较好用的搜索引擎
  • 安徽省建设工程安全+协会网站百度快速提交入口
  • 新疆网站建设外链生成网站
  • 辽宁建设工程信息网盲盒工具站seo
  • wordpress老提示更新东莞搜索seo网站关键词优化
  • 高明网站建设哪家好网站报价
  • 交互设计案例100例北京网站优化推广公司
  • 半年工作总结沈阳seo技术
  • 做网站的的价格石家庄seo推广公司
  • 手机建网站 优帮云百度联盟个人怎么接广告
  • 文登区做网站的公司网站优化员seo招聘