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

万基城市建设有限公司网站windows优化大师破解版

万基城市建设有限公司网站,windows优化大师破解版,网站开发合同.doc,河南省建设厅官方网站郭风春目录题目分析递归法题目来源 257. 二叉树的所有路径 题目分析 前序遍历以及回溯的过程如图#xff1a; 递归法 1.递归函数参数以及返回值 要传入根节点#xff0c;记录每一条路径的path#xff0c;和存放结果集的result#xff0c;这里递归不需要返回值#xff0c;代… 目录题目分析递归法题目来源 257. 二叉树的所有路径 题目分析 前序遍历以及回溯的过程如图 递归法 1.递归函数参数以及返回值 要传入根节点记录每一条路径的path和存放结果集的result这里递归不需要返回值代码如下 void traversal(TreeNode root, ListInteger paths, ListString res)2.确定递归终止条件 在写递归的时候都习惯了这么写 if (root null) {终止处理逻辑 }但是本题的终止条件这样写会很麻烦因为本题要找到叶子节点就开始结束的处理逻辑了把路径放进result里。 那么什么时候算是找到了叶子节点 是当 root不为空其左右孩子都为空的时候就找到叶子节点。 所以本题的终止条件是 if (root.left null root.right null) {终止处理逻辑 }这里我们先使用List结构的path容器来记录路径那么终止处理逻辑如下 if (root.left null root.right null) {// 输出StringBuilder sb new StringBuilder();// StringBuilder用来拼接字符串速度更快for (int i 0; i paths.size() - 1; i) {sb.append(paths.get(i)).append(-);}sb.append(paths.get(paths.size() - 1));// 记录最后一个节点res.add(sb.toString());// 收集一个路径return;}3.确定单层递归逻辑 因为是前序遍历需要先处理中间节点中间节点就是我们要记录路径上的节点先放进path中。 paths.add(root.val);// 前序遍历中然后是递归和回溯的过程上面说过没有判断root是否为空那么在这里递归的时候如果为空就不进行下一层递归了。 所以递归前要加上判断语句下面要递归的节点是否为空如下 if (root.left ! null) { // 左traversal(root.left, paths, res);}if (root.right ! null) { // 右traversal(root.right, paths, res);}此时还没完递归完要做回溯啊因为path 不能一直加入节点它还要删节点然后才能加入新的节点。 那么回溯要怎么回溯呢一些同学会这么写如下 if (root.left ! null) { // 左traversal(root.left, paths, res);}if (root.right ! null) { // 右traversal(root.right, paths, res);}paths.remove(paths.size() - 1);// 回溯这个回溯就有很大的问题我们知道回溯和递归是一一对应的有一个递归就要有一个回溯这么写的话相当于把递归和回溯拆开了 一个在花括号里一个在花括号外。 所以回溯要和递归永远在一起世界上最遥远的距离是你在花括号里而我在花括号外 那么代码应该这么写 // 递归和回溯是同时进行所以要放在同一个花括号里if (root.left ! null) { // 左traversal(root.left, paths, res);paths.remove(paths.size() - 1);// 回溯}if (root.right ! null) { // 右traversal(root.right, paths, res);paths.remove(paths.size() - 1);// 回溯}整体代码如下 class Solution {/*** 递归法*/public ListString binaryTreePaths(TreeNode root) {ListString res new ArrayList();// 存最终的结果if (root null) {return res;}ListInteger paths new ArrayList();// 作为结果中的路径traversal(root, paths, res);return res;}private void traversal(TreeNode root, ListInteger paths, ListString res) {paths.add(root.val);// 前序遍历中// 遇到叶子结点if (root.left null root.right null) {// 输出StringBuilder sb new StringBuilder();// StringBuilder用来拼接字符串速度更快for (int i 0; i paths.size() - 1; i) {sb.append(paths.get(i)).append(-);}sb.append(paths.get(paths.size() - 1));// 记录最后一个节点res.add(sb.toString());// 收集一个路径return;}// 递归和回溯是同时进行所以要放在同一个花括号里if (root.left ! null) { // 左traversal(root.left, paths, res);paths.remove(paths.size() - 1);// 回溯}if (root.right ! null) { // 右traversal(root.right, paths, res);paths.remove(paths.size() - 1);// 回溯}} }
http://www.ho-use.cn/article/10813766.html

相关文章:

  • 唐山市里做网站的保定seo
  • 有哪些网站可以做淘宝客无人区高清免费网页直播
  • 电商网站有哪些功能模块个人简历代写
  • 国外的域名注册网站城乡建设部官方网站
  • 做动效的网站wordpress禁止右键弹出菜单
  • 安徽先锋网站两学一做wordpress学习pdf
  • 查询网站备案密码是什么襄阳市住房和城乡建设局网站
  • 可以做翻译兼职的网站国内好用的五款开源建站系统
  • 去类似美团网站做软件开发wordpress 幻灯片 文章
  • 建网站要什么工做人员重庆景点图片高清图片
  • 网站动画广告条怎么做的正版电子商务网
  • 做网站文案cco网站素材
  • 家用电脑可以做网站服务器wordpress全站静态页面
  • 网站建设51jyoowordpress阅读设置
  • 网站开发手把手阳泉集团网站建设
  • 网站备案 两个域名中职省级示范校建设网站
  • 用阿里云和大淘客做网站wordpress默认登录地址
  • 中国制造网外贸网站南京建设网站需要多少钱
  • 网站上传后 后台进不去企业科技网站建设
  • 深圳外贸网站制作自媒体wordpress主题
  • 游戏网站代理app网站设计制作
  • 景区网站建设的好处工信部网站查询
  • 中国建设网站的公司戴尔公司网站建设成功的关键是什么
  • 哪个网站可以做魔方图片大全宿州城乡建设局网站
  • 哈尔滨 做网站凡客诚品还经营吗
  • wordpress建的网站如何跟微信集成项目概述
  • 怎么制作网站来赚钱国外网站做网站主播
  • 网站推广的基本手段有哪些ui网页设计成都培训
  • php网站开发个人简历国内近期新闻热点大事件
  • 信息化设计公司排名厦门seo排名扣费