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

河北建设厅官方网站八大员考试建设厅投诉网站

河北建设厅官方网站八大员考试,建设厅投诉网站,网址提交入口大全,百度下载安装免费文章目录 非递归法前序遍历后序遍历中序遍历 递归法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.yayakq.cn/news/379726/

相关文章:

  • 国外做图标网站网站建设的技术有哪些
  • 网站开发样板积分商城网站开发
  • 邢台网站软件技术专业专升本考试科目
  • 适合做外链的网站为自家企业做网站
  • 微网站建设需付费吗超市的网站怎么建设
  • 个人网站注册平台要多少钱尚海整装为啥口碑那么差
  • 网络公司网站建设规划十堰做网站最好的公司
  • 天津网站推广宣传旅游网站设计的意义
  • 色彩设计网站深圳建筑公司实力排名
  • 宿州网站推广做赚钱问卷调查的网站
  • 装修公司网站如何做网络推广wordpress yoast
  • 织梦视频网站源码网页制作的超文本标记语言称为
  • 兰州市建设局网站国贸大厦济南百度网站开发
  • 创可贴在线设计网站免费网站如何做推广方案
  • 想制作一个网站怎么来做wordpress能做几个域名的301
  • 二手交易网站开发公司网站建设介绍
  • 做外贸哪个英文网站好网站上怎样做轮播图
  • 抚州 提供网站建站 公司wordpress编辑器添加按钮弹出窗口
  • 北京企业网站建设哪家好wordpress离线写文章
  • 注册公司网站做网站可以赚多少钱
  • o2o电商网站建设网站建设类
  • 珠海市建设局网站使馆网站建设
  • 临沂电商网站建设校园设计网站
  • 做网站的一个黑点符号文件错误wordpress
  • 建设网站的基本流程是什么最好看免费观看高清大全老师补课中国
  • 漳州做网站优化wordpress幻灯片简码
  • 网站放到服务器wordpress 视频
  • 怎么做淘宝网站赚钱吗wordpress怎么修改主题首页
  • 二手车网站程序注册公司的网站是什么
  • 个人免费网站建站关键词呼和浩特网站建设SEO优化