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

好用的土木建筑网站推广软件赚钱的app

好用的土木建筑网站,推广软件赚钱的app,网站颜色搭配表,做搜索引擎的网站文章目录 非递归法前序遍历后序遍历中序遍历 递归法DFS 非递归法 通过栈Stack来模拟递归。 前序遍历 LeetCode 144 前序遍历:1 2 3 定义:存放答案的List、栈Stack 将root入栈出栈:node,为null则舍弃将node放入list将node.r…

文章目录

    • 非递归法
      • 前序遍历
      • 后序遍历
      • 中序遍历
    • 递归法DFS

非递归法

通过栈Stack来模拟递归。

前序遍历

LeetCode 144
在这里插入图片描述

前序遍历:1 2 3

定义:存放答案的List、栈Stack

  1. 将root入栈
  2. 出栈:node,为null则舍弃
  3. 将node放入list
  4. 将node.right入栈
  5. 将node.left入栈
  6. 栈不为空则重复2-5步

为了让左节点优先于右节点出栈,因此先将右节点入栈。

class Solution {public List<Integer> preorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();List<Integer> list = new LinkedList<>();stack.push(root);while(!stack.empty()){TreeNode node = stack.pop();if(node==null)continue;list.add(node.val);stack.push(node.right);stack.push(node.left);}return list;}
}

后序遍历

LeetCode 145
在这里插入图片描述

后序遍历:2 3 1

后序遍历仅需在前序遍历的代码中修改3处即可。

由前序遍历1 2 3 改为 1 3 2 再翻转为 2 3 1即为答案。

class Solution {public List<Integer> postorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();List<Integer> list = new LinkedList<>();stack.push(root);while(!stack.empty()){TreeNode node = stack.pop();if(node == null)continue;list.add(node.val);stack.push(node.left); // 先放入左节点stack.push(node.right); }Collections.reverse(list); // 反转return list;}
}

中序遍历

LeetCode 94

中序遍历代码与前序和后续不同。

在这里插入图片描述

中序遍历: 4 2 5 1 3。

思考:要想先输出4,则需要将左节点持续入栈,直到为null,此时出栈即为4,然后将其右节点入栈…

同样的,定义存放结果的list和栈stack。

  1. cur = root
  2. cur不为空或者栈不为空
  3. 循环 将cur入栈,并将cur赋值其左节点,直到为空
  4. 出站node,将node加入list
  5. 将node赋值为node.left
  6. 重复2 - 5步
class Solution {public List<Integer> inorderTraversal(TreeNode root) {Stack<TreeNode> stack = new Stack<>();List<Integer> list = new LinkedList<>();TreeNode cur = root;while(cur!=null||!stack.empty()){while(cur!=null){stack.push(cur);cur = cur.left;}TreeNode node = stack.pop(); list.add(node.val);cur = node.right;}return list;}
}

递归法DFS

class Solution {List<Integer> list1 = new LinkedList<>(); // 前序List<Integer> list2 = new LinkedList<>(); // 中序List<Integer> list3 = new LinkedList<>(); // 后序public List<Integer> inorderTraversal(TreeNode root) {traverse(root);return list2; }void traverse(TreeNode root){if(root==null)return;list1.add(root.val); traverse(root.left); // 递归左节点list2.add(root.val);traverse(root.right); // 递归右节点list3.add(root.val);}}

参考:

  • cyc2018
  • 代码随想录 B站
http://www.rdtb.cn/news/21587.html

相关文章:

  • 黄骅做网站的电话seo整站优化费用
  • 怎么做网页设计稿seo网站优化经理
  • 网站开发的工具某网站seo诊断分析和优化方案
  • 云主机怎么做网站十大网络营销经典案例
  • 网站网页设计百度文库官网
  • 游戏网站建设毕业论文推广普通话活动方案
  • 如何在app上做网站竞价托管哪家便宜
  • 建一个网站需要哪些人分类信息网站平台有哪些
  • 网站制作公司 深圳谷歌浏览器app下载
  • 大型网站订单系统怎么设计长春网站快速排名提升
  • 做网站的商标是哪类做网站哪家公司比较好而且不贵
  • 怎么做用户调研网站推广app平台有哪些
  • 济南网站技术个人推广app的妙招
  • 陕西网站开发公司哪家好seo关键词排名优化怎样
  • 搭建网站服务外贸平台app
  • 网站后台素材宁波网站快速优化
  • 网站开发技术创业计划b站推广
  • 怎么做百度口碑网站营销型网站建设公司价格
  • 嘉祥网站建设友情链接交换平台源码
  • 普陀区建设和交通委员会网站优化大师的三大功能
  • 佛山做app网站线下推广渠道和方式
  • 怎么做的360网站打不开专业网络推广机构
  • 旅游网站建设色彩搭配表网站seo方案模板
  • 天元建设集团有限公司商票逾期seo价格查询公司
  • 网红营销分析seo公司优化
  • 网站检索功能怎么做微信管理助手
  • 配资网站建设是什么意思seo代码优化
  • 网站开发的流程和步骤是什么seo资料网
  • 网站开发教学视频谷歌网站推广优化
  • 房地产网站策划中文域名注册官网