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

门户网站建设厂商名录中国比较有名的公司

门户网站建设厂商名录,中国比较有名的公司,织梦学校网站模板,wordpress 插件目录目录 1、前言 2、二叉树的非递归遍历 2.1、先序遍历 2.2、中序遍历 2.3、后序遍历 1、前言 学习二叉树的三种非递归遍历前#xff0c;首先来了解一下递归序#xff1a; 递归序就是按照先序遍历的顺序#xff0c;遇到的所有结点按顺序排列#xff0c;重复的结点也必须记…目录 1、前言 2、二叉树的非递归遍历 2.1、先序遍历 2.2、中序遍历 2.3、后序遍历 1、前言 学习二叉树的三种非递归遍历前首先来了解一下递归序 递归序就是按照先序遍历的顺序遇到的所有结点按顺序排列重复的结点也必须记录。 我们可以发现递归序中每个结点都会遇到三次。 这是因为当进入某一结点时对该结点进行第一次操作然后调用其左孩子结点等左孩子结点结束调用时会返回自己此时就可以对自己进行第二次操作然后再调用其右孩子结点等左孩子结点结束调用时又会返回自己此时就可以对自己进行第三次操作因为不管怎样调用完孩子结点后终究会返回到父结点。 直接给出结论 递归序中第一次遇到该节点时打印结点第二次第三次均不做任何操作这就是先序遍历。 递归序中第二次遇到该节点时打印结点第一次第三次均不做任何操作这就是中序遍历。 递归序中第三次遇到该节点时打印结点第一次第二次均不做任何操作这就是后序遍历。 关于递归序详细的讲解可以看我之前写的一篇博客里面有详细讲解这里就不过多赘述 【算法与数据结构】二叉树的三种遍历代码实现上—— 用递归序知识点讲解-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/133609612?spm1001.2014.3001.5501 2、二叉树的非递归遍历 任何递归函数都可以改成非递归函数因为递归函数不是什么玄学只是递归时系统帮忙解决了压栈问题。那么不用递归方式的话只要自己手动进行压栈依然可以完成递归能够实现的功能。 有了上面递归序的知识点作为铺垫就可以很好的理解非递归的实现了。 2.1、先序遍历 递归序中第一次遇到该节点时打印结点第二次第三次均不做任何操作这就是先序遍历。 首先使用cur依次将二叉树所有左边界节点入栈并且打印节点。当此时cur走到叶子节点后将栈顶元素出栈并让cur指向出栈元素的右孩子继续进行左边界节点入栈操作。 public ListInteger preorderTraversal(TreeNode root) {ListInteger list new LinkedList();if(root null) {return list;}StackTreeNode stack new Stack();TreeNode cur root;while(cur ! null || !stack.isEmpty()) {if(cur ! null) {stack.push(cur);System.out.print(cur.val ); //第一次遇到时进行打印cur cur.left;} else {cur stack.pop(); //第二次遇到cur cur.right;}}return list;} 2.2、中序遍历 递归序中第二次遇到该节点时打印结点第一次第三次均不做任何操作这就是中序遍历。  首先使用cur依次将二叉树所有左边界节点入栈。当此时cur走到叶子节点后将栈顶元素出栈后并打印此时第二次遇到该元素。然后让cur指向出栈元素的右孩子继续进行左边界节点入栈操作。 public ListInteger inorderTraversal(TreeNode root) {ListInteger list new LinkedList();if(root null) {return list;}StackTreeNode stack new Stack();TreeNode cur root;while(cur ! null || !stack.isEmpty()) {if(cur ! null) {stack.push(cur); //第一次遇到cur cur.left;} else {cur stack.pop();System.out.print(cur.val ); //第二次遇到时进行打印cur cur.right;}}return list;} 2.3、后序遍历 递归序中第三次遇到该节点时打印结点第一次第二次均不做任何操作这就是后序遍历。 首先使用cur依次将二叉树所有左边界节点入栈。当此时cur走到叶子节点后使用peek()查找出栈顶元素top并非出栈后并打印然后判断top节点是否存在右孩子当存在时则让cur指向top节点的右孩子继续进行左边界节点入栈操作。当top不存在右孩子时则将栈顶元素出栈并打印栈顶元素此时第三次遇到该元素。 public ListInteger postorderTraversal(TreeNode root) {ListInteger list new LinkedList();if(root null) {return list;}StackTreeNode stack new Stack();TreeNode cur root;TreeNode prev null;while(cur ! null || !stack.isEmpty()) {if(cur ! null) {stack.push(cur); //第一次遇到cur cur.left;} else {TreeNode top stack.peek(); //第二次遇到if(top.right ! null prev ! top.right) { //当该节点右子树不为空,并且之前没有去过右子树时cur top.right; } else { //该节点右子树为空或者是已经去过一次右子树了top stack.pop();System.out.print(cur.val ); //第三次遇到时进行打印prev top;}}}return list;} 博主推荐  【LeetCode力扣】单调栈解决Next Greater Number下一个更大值问题-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/136030138?spm1001.2014.3001.5501 【数据结构】二叉搜索树的模拟实现-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/135910604?spm1001.2014.3001.5501 【LeetCode力扣】面试题 17.14. 最小K个数top-k问题-CSDN博客https://blog.csdn.net/zzzzzhxxx/article/details/135737266?spm1001.2014.3001.5501 如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力 如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力 如果觉得作者写的不错求给博主一个大大的点赞支持一下你们的支持是我更新的最大动力
http://www.hkea.cn/news/14387053/

相关文章:

  • 北京网站备案号wordpress的主题上传了没有显示
  • 网站的登录界面怎么做网站页面设计如何收费
  • 网站建设毕业设计模板百度域名值多少钱
  • 制作网页的网站叫什么深圳找人做网站
  • 为什么要建设外贸网站上海工商查询系统官网
  • 手机如何做微商城网站国外学做咖啡的网站
  • 国外装修网站建设模板两学一做的做题网站是多少
  • 网站制作 牛商网什么样的公司愿意做网站
  • 手游传奇网站庆阳网站设计价格
  • 常州网站建设哪家好南昌网站建设公司
  • 网站建设甲方给乙方的需求方案各大网站推广软件
  • 娄底网站建设企业深圳网站搜索优化工具
  • 彩票网站建设古大学网站开发开源架构
  • 做网站是怎么赚钱的违法如何搭建一个app
  • 建设纺织原料网站网站开发的完整流程图
  • 郑州设计网站的公司网站建设与运行的盈利收入
  • 网站设计背景东莞南城网站设计
  • 大淘客怎么做网站网络界面设计
  • 网站的设计技术策划如何在解决方案中新建网站
  • 如何查看网站备案wordpress 轻云
  • 网站大数据怎么做的万能浏览器破解版
  • 商务网站建设的六个步骤卖灯杆的做网站好
  • 三里河网站建设公司wordpress调用文章部分内容
  • 直播网站开发多少钱服务器租用价格
  • 网上最好购物网站上海网络推广服务
  • 网站广告做的好的企业案例分析通过输入域名访问自己做的网站
  • 网站有了域名后怎么还上不了自助公益网站建设
  • 湖北seo网站推广北京网站建设推荐华网天下
  • 简答网站内容建设的时候内链重要性招远网站开发
  • 徐州市制作网站的公司山西龙采网站建设合同