先序,中序,后序排列

前序遍历:根结点 ---> 左子树 ---> 右子树

中序遍历:左子树---> 根结点 ---> 右子树

后序遍历:左子树 ---> 右子树 ---> 根结点

上图树的三种遍历:

前序:A B D E C F

中序:D B E A C F

后序:D E B F C A

代码实现(递归)

//先序
public static void pre(Node head) {if (head == null) {return;}System.out.println(head.value);pre(head.left);pre(head.right);}
//中序public static void in(Node head) {if (head == null) {return;}in(head.left);System.out.println(head.value);in(head.right);}
//后序public static void pos(Node head) {if (head == null) {return;}pos(head.left);pos(head.right);System.out.println(head.value);}

非递归

//先序public static void pre(Node head) {System.out.print("pre-order: ");if (head != null) {Stack<Node> stack = new Stack<Node>();stack.add(head);while (!stack.isEmpty()) {head = stack.pop();System.out.print(head.value + " ");if (head.right != null) {stack.push(head.right);}if (head.left != null) {stack.push(head.left);}}}System.out.println();}

后序思路:先序是头左右,所以在代码里面是先右孩子再左孩子进栈,把他变成先左孩子再右孩子进栈,就变成了头右左,再把这个栈s1弹出到栈s2,这个栈s2就变成了左右头

 public static void pos2(Node h) {System.out.print("pos-order: ");if (h != null) {Stack<Node> stack = new Stack<Node>();stack.push(h);Node c = null;while (!stack.isEmpty()) {c = stack.peek();if (c.left != null && h != c.left && h != c.right) {stack.push(c.left);} else if (c.right != null && h != c.right) {stack.push(c.right);} else {System.out.print(stack.pop().value + " ");h = c;}}}System.out.println();}

中序

 public static void in(Node cur) {System.out.print("in-order: ");if (cur != null) {Stack<Node> stack = new Stack<Node>();while (!stack.isEmpty() || cur != null) {if (cur != null) {stack.push(cur);cur = cur.left;} else {cur = stack.pop();System.out.print(cur.value + " ");cur = cur.right;}}}System.out.println();}

二叉数先序,中序,后序排列(递归与非递归)相关推荐

  1. 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...

    已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法 #define N 10 //二叉树节点的个数 char postorderstr[]={};//后序序列 char i ...

  2. LeetCode 98验证二叉搜素树(中序遍历)99恢复二叉搜索树

    微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 92反转链表Ⅱ&93复制ip地址&94 ...

  3. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  4. c++ 删除二叉树的子树_数据结构—树|二叉树|前序遍历、中序遍历、后序遍历【图解实现】...

    点击蓝字关注我们 AI研习图书馆,发现不一样的精彩世界 数据 结构 二叉树的遍历 一.树 在谈二叉树的知识点之前,我们首先来看一下树和图的基本概念.树:不包含回路的连通无向图,树是一种简单的非线性结构 ...

  5. 二叉树的前序遍历,中序遍历,后序遍历-详解-配套例题

    二叉树作为数据结构中一种简单而且重要的数据结构,他的存储结构和算法都相对比较简单,因此他也显得特别重要,因为很多问题都可以抽象为二叉树的问题. 在这里我们对于二叉树的基本概念不做详细介绍,我们这里主要 ...

  6. 二叉树、前序遍历、中序遍历、后序遍历

    一.树 在谈二叉树前先谈下树和图的概念 树:不包含回路的连通无向图(树是一种简单的非线性结构) 树有着不包含回路这个特点,所以树就被赋予了很多特性 1.一棵树中任意两个结点有且仅有唯一的一条路径连通 ...

  7. 二叉树的二叉链表存储结构构建以及先序遍历

    #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR -1 typedef int TElemTy ...

  8. 二叉树的遍历之先序遍历、中序遍历和后序遍历

    例图: 1.先序遍历 先序遍历也叫做先跟遍历.前序遍历.先序遍历步骤为:访问根结点然后遍历左子树,最后遍历右子树.在遍历左.右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树.即根左右. 如上 ...

  9. 非递归先、中、后序遍历二叉树(C语言)

    文章目录 前言 一.二叉树非递归遍历算法 1.先序遍历 2.中序遍历 3.后序遍历 二.完整程序 三.运行结果实例 前言 本程序采用C语言编写,栈和二叉树的基本操作函数基于严蔚敏老师的<数据结构 ...

  10. 二叉树的四种遍历方法(前序遍历、中序遍历、后序遍历、层序遍历)有图有真相!!!

    文章目录 二叉树的四种遍历方式 前序遍历(Preorder Traversal) 中序遍历(Inorder Traversal) 后序遍历(Postorder Traversal) 层序遍历(Leve ...

最新文章

  1. 06-hibernate注解-一对多单向外键关联
  2. GNN 系列(三):GraphSAGE
  3. 复旦大学自然语言处理实验室发布模型鲁棒性评测平台TextFlint
  4. ie浏览器怎样查看html,查看IE浏览器历史记录的方法
  5. 编写一个弹出式菜单的shell程序_分享一个有趣的shell脚本--实现抓阄程序
  6. 计算机网络上网时间,电脑怎么限制上网时间
  7. 科学计算机java算法实现,(Java)科学型计算器开发及实现.doc
  8. python 查询sqlserver 视图_SQL Server查看视图定义总结
  9. java如何添加自定义的图片_java代码将图片加上自定义水印 -4
  10. python django开发工具_Python和Django web开发工具pycharm介绍
  11. 计算机对民间音乐,《中国民间歌曲》
  12. Android8.0 HIDL绑定式和直通式区别
  13. 深入String 与StringBuffer详解那个更省资源
  14. 用c语言写易语言Linux库,C语言编写支持库教程
  15. 提供一个文档下载接口,用httpclient下载文件
  16. pdfplumber和pdfminer.six提取PDF中文本行内容及对应坐标
  17. 【CVPR2021】OCR文本检测MOST解读
  18. iphone13开箱验机全步骤
  19. AirPods pro 连接Macbook pro左耳无声音
  20. python代码写父亲节快乐图片_巧用代码制作动态图文图【父亲节】

热门文章

  1. WPF下载图片到计算机
  2. form.submit() 提交部分浏览器不管用
  3. 一张纸对折13次JAVA_一张纸最多折叠8次?她把纸折叠了13次后,发生了什么?
  4. html 输入框联动显示,js下拉选择框与输入框联动实现添加选中值到输入框的方法...
  5. kafka消费者--coordinate分析
  6. MAC必装软件之HomeBrew、HomeBrew-Cask
  7. python蓝桥杯从入门到~
  8. STM32 -SPI关于nss引脚
  9. 让你写工作总结不用愁,总结的方法套路大全
  10. 手游代理平台有哪些,有没有好的游戏平台推荐?推荐云诚盒子