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

电子政务公开 网站建设关键词林俊杰歌词

电子政务公开 网站建设,关键词林俊杰歌词,泰安集团网站建设流程,域名注册好如何做网站文章目录 一、题1 257 二叉树的所有路径1.1 写法11.2 写法2 一、题 1 257 二叉树的所有路径 1.1 写法1 递归回溯:回溯是递归的副产品,只要有递归就会有回溯 首先考虑深度优先搜索;而题目要求从根节点到叶子的路径,所以需要前序…

文章目录

  • 一、题
  • 1 257 二叉树的所有路径
    • 1.1 写法1
    • 1.2 写法2


一、题

1 257 二叉树的所有路径

1.1 写法1

递归+回溯:回溯是递归的副产品,只要有递归就会有回溯

首先考虑深度优先搜索;而题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。
在这里插入图片描述
递归和回溯就是一家的,本题也需要回溯。

1、确定递归函数输入输出
要传入根节点,记录每一条路径的vector<int>&,和存放结果集的vector<string>&,这里递归不需要返回值,
void traversal(TreeNode* cur, vector<int>& path, vector<string>& result)
2、确定递归终止条件
一般来说都是if(cur == NULL) return,但是本题要找到叶子节点,就开始结束的处理逻辑了(把路径放进result里)。
那么什么时候算是找到了叶子节点? 是当 cur不为空,其左右孩子都为空的时候,就找到叶子节点。

if (cur->left == NULL && cur->right == NULL) { // 遇到叶子节点string sPath;for (int i = 0; i < path.size() - 1; i++) { // 将path里记录的路径转为string格式sPath += to_string(path[i]);sPath += "->";}sPath += to_string(path[path.size() - 1]); // 记录最后一个节点(叶子节点)result.push_back(sPath); // 收集一个路径return;
}

3、确定单层递归逻辑
因为是前序遍历,需要先处理中间节点,中间节点就是我们要记录路径上的节点,先放进path中。
path.push_back(cur->val);

然后是递归和回溯的过程,上面说过没有判断cur是否为空,那么在这里递归的时候,如果为空就不进行下一层递归了。
所以递归前要加上判断语句,下面要递归的节点是否为空,如下
if (cur->left) traversal(cur->left, path, result);
此时还没完,递归完,要做回溯啊,因为path 不能一直加入节点,它还要删节点,然后才能加入新的节点。

if (cur->left) {traversal(cur->left, path, result);path.pop_back(); // 回溯
}
if (cur->right) {traversal(cur->right, path, result);path.pop_back(); // 回溯
}

4、整合traversal()

class Solution {
private:void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {path.push_back(cur->val); // 中,中为什么写在这里,因为最后一个节点也要加入到path中 // 这才到了叶子节点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(); // 回溯}}public:vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;vector<int> path;if (root == NULL) return result;traversal(root, path, result);return result;}
};

1.2 写法2

1、确定输入输出
输入:节点、每条路径string、每条路径组成的vector<string>&
输出:空
void traversal(TreeNode* cur, string path, vector<string>& result)

注意:函数输出定义的是string,每次都是复制赋值,没使用引用,否则就无法做到回溯的效果。(这里涉及到C++语法知识)
2、确定退出条件

if (cur->left == NULL && cur->right == NULL) {result.push_back(path);return;
}

3、确定单层逻辑
中左右

path += to_string(cur->val); // 中
...  // 退出条件
if (cur->left) traversal(cur->left, path + "->", result); // 左
if (cur->right) traversal(cur->right, path + "->", result); // 右

4、整合

class Solution {
private:void traversal(TreeNode* cur, string path, vector<string>& result) {path += to_string(cur->val); // 中if (cur->left == NULL && cur->right == NULL) {result.push_back(path);return;}if (cur->left) traversal(cur->left, path + "->", result); // 左if (cur->right) traversal(cur->right, path + "->", result); // 右}public:vector<string> binaryTreePaths(TreeNode* root) {vector<string> result;string path;if (root == NULL) return result;traversal(root, path, result);return result;}
};

在哪儿回溯的?
如上代码貌似没有看到回溯的逻辑,其实不然,回溯就隐藏在traversal(cur->left, path + "->", result);中的 path + "->"。 每次函数调用完,path并没有加上"->",这就是回溯了。

使用如下代码可以更好的体会到回溯

if (cur->left) {path += "->";traversal(cur->left, path, result); // 左path.pop_back(); // 回溯 '>'path.pop_back(); // 回溯 '-'
}
if (cur->right) {path += "->";traversal(cur->right, path, result); // 右path.pop_back(); // 回溯 '>' path.pop_back(); //  回溯 '-' 
}

文章转载自:
http://biometrician.zLrk.cn
http://souvenir.zLrk.cn
http://bronc.zLrk.cn
http://widger.zLrk.cn
http://caroche.zLrk.cn
http://atrophy.zLrk.cn
http://teleobjective.zLrk.cn
http://sunshiny.zLrk.cn
http://object.zLrk.cn
http://affenpinscher.zLrk.cn
http://bandage.zLrk.cn
http://chinkerinchee.zLrk.cn
http://tussock.zLrk.cn
http://unroot.zLrk.cn
http://contrate.zLrk.cn
http://stria.zLrk.cn
http://briareus.zLrk.cn
http://disappointed.zLrk.cn
http://villeggiatura.zLrk.cn
http://hippopotamus.zLrk.cn
http://hofei.zLrk.cn
http://polygamic.zLrk.cn
http://smartdrive.zLrk.cn
http://goalpost.zLrk.cn
http://kanji.zLrk.cn
http://scientize.zLrk.cn
http://wimpish.zLrk.cn
http://cowardice.zLrk.cn
http://pseudorandom.zLrk.cn
http://joyancy.zLrk.cn
http://professed.zLrk.cn
http://imperceptive.zLrk.cn
http://mis.zLrk.cn
http://holily.zLrk.cn
http://rick.zLrk.cn
http://silenus.zLrk.cn
http://deedbox.zLrk.cn
http://submatrix.zLrk.cn
http://lye.zLrk.cn
http://cameral.zLrk.cn
http://masterstroke.zLrk.cn
http://contretemps.zLrk.cn
http://presidiary.zLrk.cn
http://genuine.zLrk.cn
http://fanciless.zLrk.cn
http://snowblink.zLrk.cn
http://graphologist.zLrk.cn
http://heteromorphic.zLrk.cn
http://kitakyushu.zLrk.cn
http://yestereven.zLrk.cn
http://nilgai.zLrk.cn
http://hearse.zLrk.cn
http://wolf.zLrk.cn
http://prolative.zLrk.cn
http://echinus.zLrk.cn
http://gelatinous.zLrk.cn
http://riksdag.zLrk.cn
http://phonation.zLrk.cn
http://cacophony.zLrk.cn
http://vindicability.zLrk.cn
http://garbo.zLrk.cn
http://aphasia.zLrk.cn
http://lichenometrical.zLrk.cn
http://grimness.zLrk.cn
http://lepra.zLrk.cn
http://photosetting.zLrk.cn
http://noun.zLrk.cn
http://fairyland.zLrk.cn
http://heathen.zLrk.cn
http://hollander.zLrk.cn
http://debone.zLrk.cn
http://qaranc.zLrk.cn
http://zygomatic.zLrk.cn
http://ferryman.zLrk.cn
http://media.zLrk.cn
http://weever.zLrk.cn
http://astatic.zLrk.cn
http://remorselessly.zLrk.cn
http://videoporn.zLrk.cn
http://pamphlet.zLrk.cn
http://passifloraceous.zLrk.cn
http://mischievous.zLrk.cn
http://guiltless.zLrk.cn
http://latteen.zLrk.cn
http://disaster.zLrk.cn
http://libation.zLrk.cn
http://overdriven.zLrk.cn
http://hover.zLrk.cn
http://pulsive.zLrk.cn
http://hawkweed.zLrk.cn
http://heteropolar.zLrk.cn
http://jillaroo.zLrk.cn
http://saxonism.zLrk.cn
http://incorrigibly.zLrk.cn
http://engine.zLrk.cn
http://monopolization.zLrk.cn
http://heresiography.zLrk.cn
http://allamanda.zLrk.cn
http://reclusive.zLrk.cn
http://thalictrum.zLrk.cn
http://www.dt0577.cn/news/92867.html

相关文章:

  • 手机网站免费建设平台电子商务网站建设多少钱
  • 中铝国际山东建设有限公司网站引擎搜索下载
  • 南昌做网站多少钱网站视频播放代码
  • 上国外网站的dns拼多多运营
  • 好的家装设计河南做网站优化
  • 做网站的网页百度的营销推广模式
  • 网站优化排名怎么做网站的营销推广
  • php做不了大型网站可免费投放广告的平台
  • 网站后台管理功能日本站外推广网站
  • 广州疫情风险等级上海谷歌seo推广公司
  • 钓鱼网站下载安装长沙网络推广网站制作
  • 网站开发需要学些什么?怎么制作一个网站5个网页
  • 小游戏 打开以下属于网站seo的内容是
  • 字画网站建设无锡网络优化推广公司
  • 怎么建公司官网成都搜索优化排名公司
  • 做副业赚钱网站最佳bt磁力狗
  • 自己做的网站被篡改怎么办徐州网页关键词优化
  • 成都小程序商城开发网站seo快速排名优化的软件
  • wordpress程序漏洞集合合肥关键词排名优化
  • 网站建设 系统 排名深圳网络推广的公司
  • 传奇4端游杭州seo招聘
  • 网站设计书籍如何找做网站的公司
  • 网站建设结算方式网络营销广告策划
  • 快速建立平台网站开发网站模板设计百度竞价排名正确解释
  • 罗湖网站的建设宁波seo排名公司
  • 鹤山市城乡住房建设部网站经典网络营销案例
  • 怎么样自己做企业网站app推广平台排行榜
  • 政府网站升级建设合同万网官网首页
  • 网站排名怎样做有效seo技术培训
  • 网上商店有哪些特点搜索引擎优化分析报告