二叉树前/先序DLR中序LDR后序LRD遍历及镜像翻转

  • 一、名词释义
    • 二叉树的遍历方式,根据遍历根节点的顺序不同,分为三种:前序(先序)遍历(DLR)、中序遍历(LDR)、后序遍历(LRD)。
    • 1、前序遍历【根-左-右】
    • 2、中序遍历【左-根-右】
    • 3、后序遍历【左-右-根】
    • 4、镜像反转【将二叉树的每个左右子树互换】
  • 二、执行代码

一、名词释义

二叉树的遍历方式,根据遍历根节点的顺序不同,分为三种:前序(先序)遍历(DLR)、中序遍历(LDR)、后序遍历(LRD)。

【D:degree,节点拥有的子树的个数被称为节点的度,比如二叉树中每个有子树的父节点,都是有度的节点。 L:left R:right】

1、前序遍历【根-左-右】

2、中序遍历【左-根-右】

3、后序遍历【左-右-根】

4、镜像反转【将二叉树的每个左右子树互换】

二、执行代码

package com.dylanu.algorithm;class BinaryTree{BinaryTree left;BinaryTree right;Integer val;public BinaryTree(Integer val) {super();this.val = val;}public BinaryTree getLeft() {return this.left;}public BinaryTree getRight() {return this.right;}public Integer getVal() {return this.val;}
}public class BinaryTreeTest {static StringBuilder stringBuilder = new StringBuilder();/**先序遍历《 根-左-右 》*/public static void preOrderTraversal(BinaryTree root) {if(null == root) {return;}//根stringBuilder.append(root.getVal()).append("#");//左preOrderTraversal(root.left);//右preOrderTraversal(root.right);}/**中序遍历《 左-根-右 》*/public static void inOrderTraversal(BinaryTree root) {if(null == root ) {return;}inOrderTraversal(root.getLeft());  stringBuilder.append(root.getVal()).append("#");inOrderTraversal(root.getRight());}/**后序遍历《 左-右-根 》*/public static void postOrderTraversal(BinaryTree root) {if(null == root ) {return;}postOrderTraversal(root.getLeft()); postOrderTraversal(root.getRight());stringBuilder.append(root.getVal()).append("#");}/**镜像翻转*/public static void reversal(BinaryTree root) {if(null == root ) {return;}BinaryTree left = root.getLeft(); BinaryTree right = root.getRight(); reversal(left);reversal(right);root.left = right;root.right = left;}public static void main(String[] args) {BinaryTree root = new BinaryTree(6);root.left = new BinaryTree(2);root.left.left = new BinaryTree(1);root.left.left.left = new BinaryTree(0);root.left.right = new BinaryTree(4);root.left.right.left = new BinaryTree(3);root.left.right.right = new BinaryTree(5);root.right = new BinaryTree(11);root.right.left = new BinaryTree(7);root.right.right = new BinaryTree(9);root.right.right.left = new BinaryTree(8);root.right.right.right = new BinaryTree(10);//      preOrderTraversal(root);System.out.println(stringBuilder);//        inOrderTraversal(root);System.out.println(stringBuilder);//     postOrderTraversal(root);System.out.println(stringBuilder);inOrderTraversal(root);System.out.println(stringBuilder);reversal(root);stringBuilder = new StringBuilder();inOrderTraversal(root);System.out.println(stringBuilder);}
}

【二叉树前/先序DLR中序LDR后序LRD遍历及镜像翻转,so esay~】相关推荐

  1. 二叉树前序中序后序_leetcode889_go_根据前序和后序遍历构造二叉树

    leetcode889_根据前序和后序遍历构造二叉树 01 - 题目 返回与给定的前序和后序遍历匹配的任何二叉树. pre 和 post 遍历中的值是不同的正整数. 示例:输入:pre = [1,2, ...

  2. 二叉树前序中序后续线索树_后序线索二叉树怎么画 线索二叉树基本操作详解 - 办公软件 - 服务器之家...

    后序线索二叉树怎么画 线索二叉树基本操作详解 发布时间:2017-05-23 来源:服务器之家 遍历二叉树是以一定规则将二叉树中结点排列成一个线性序列,得到二叉树中结点的先序,中序或后序序列.这实际上 ...

  3. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

  4. 五种方式反转二叉树(前序递归和迭代反转,后序递归和迭代反转,层序反转)

    leetcode 226 反转二叉树 题目链接 翻转一棵二叉树. 示例: 输入: 4 / 2 7 / \ / 1 3 6 9 输出: 4 / 7 2 / \ / 9 6 3 1 五种方式实现二叉树的反 ...

  5. 给出中序和前序求后序Java,已知二叉樹前序,中序遍歷,求后序遍歷,java實現...

    簡單介紹一下思想,先看前序,前序遍歷的第一個節點,就是該樹的根.在中序中找到該根的位置,設為index,在中序遍歷集合中,位於index之前的屬於根的左子樹,位於index之后的屬於根的右子樹.然后, ...

  6. 前序中序转后序,后序中序转前序,前序后序转中序

    将前序序列存入pre数组,中序序列存入in数组,后序序列存入post数组,则: 前序中序->后序 #include <cstdio> using namespace std; int ...

  7. 【Java数据结构与算法】实现二叉树的先根,中根,后根,层次遍历

    创建一如下二叉树结构,并分别采用四种遍历:先根,中根,后根,层次遍历.并在 main 中编写测试用例,输出四种遍历结果. 先根:根-->左子树-->右子树 中根:左子树-->根--& ...

  8. 若依前后端分离vue 中项目上线后 图片预览无法显示问题

    这里看到 图片返回的url地址里面 图片前缀名多了个 /prod - api 导致图片无法预览 找到components 里面的imagetwo 里面的index.vue这里只需要在url上传图片组件 ...

  9. 二叉树的层序遍历与镜像翻转js

    题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 . (即逐层地,从左到右访问所有节点). 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,2 ...

最新文章

  1. jquery zoom jquery放大镜特效
  2. 评价cnblogs.com的用户体验
  3. Python 3.x 引入了函数注释
  4. linux修改磁盘盘符,debian下修改磁盘阵列盘符
  5. 量化策略回测BoolC
  6. linux 内核编程 延时函数,linux中内核延时编程
  7. 深度学习之经典卷积神经网络的技术浅析 | 硬创公开课预告
  8. 去掉flash player自带的fff新推荐广告插件
  9. 如何使用计算机自带的刻录软件,Win7系统自带光盘刻录功能如何使用?
  10. 下载英文图书的几个网站
  11. 无线wifi盒子用不用拉网线?
  12. Three——二、加强对三维空间的认识
  13. Kerberos (一) --------- Kerberos 部署
  14. 利用人工智能和进化分析,绘制出真核生物的蛋白质之间相互作用的3D模型
  15. 基于改进层次凝聚聚类算法的垃圾收运跨区域调度策略
  16. 分享一个英文词语翻译成中文的数据
  17. python菜鸟教程学习:数据结构
  18. 织梦 DEDECMS LOOP标签的用法及调用
  19. java内省和反射机制_Java内省和反射机制三步曲之 - 内省
  20. dedecms 5.7SP1实现获得当前栏目父栏目ID

热门文章

  1. 2019年 支付宝集福攻略
  2. 区块链与金融基础设施——兼论Facebook Libra
  3. 自动控制原理MATLAB命令
  4. c语言程序设计试题1253,2017年1月试卷号1253C语言程序设计A.pdf
  5. 高中数学必修一:集合高考典型例题解题技巧方法
  6. Vulkan_Shader—高级光照_阴影_原理
  7. 蓝桥杯真题 13省Cc1-猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于
  8. CentOS 6.7 源码搭建LNMP架构部署动态网站环境
  9. 一、【s3c2440移植linux-3.5】移植准备
  10. TCP/IP详解卷1:第十四章 DNS 域名系统