【二叉树前/先序DLR中序LDR后序LRD遍历及镜像翻转,so esay~】
二叉树前/先序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~】相关推荐
- 二叉树前序中序后序_leetcode889_go_根据前序和后序遍历构造二叉树
leetcode889_根据前序和后序遍历构造二叉树 01 - 题目 返回与给定的前序和后序遍历匹配的任何二叉树. pre 和 post 遍历中的值是不同的正整数. 示例:输入:pre = [1,2, ...
- 二叉树前序中序后续线索树_后序线索二叉树怎么画 线索二叉树基本操作详解 - 办公软件 - 服务器之家...
后序线索二叉树怎么画 线索二叉树基本操作详解 发布时间:2017-05-23 来源:服务器之家 遍历二叉树是以一定规则将二叉树中结点排列成一个线性序列,得到二叉树中结点的先序,中序或后序序列.这实际上 ...
- 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表
一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...
- 五种方式反转二叉树(前序递归和迭代反转,后序递归和迭代反转,层序反转)
leetcode 226 反转二叉树 题目链接 翻转一棵二叉树. 示例: 输入: 4 / 2 7 / \ / 1 3 6 9 输出: 4 / 7 2 / \ / 9 6 3 1 五种方式实现二叉树的反 ...
- 给出中序和前序求后序Java,已知二叉樹前序,中序遍歷,求后序遍歷,java實現...
簡單介紹一下思想,先看前序,前序遍歷的第一個節點,就是該樹的根.在中序中找到該根的位置,設為index,在中序遍歷集合中,位於index之前的屬於根的左子樹,位於index之后的屬於根的右子樹.然后, ...
- 前序中序转后序,后序中序转前序,前序后序转中序
将前序序列存入pre数组,中序序列存入in数组,后序序列存入post数组,则: 前序中序->后序 #include <cstdio> using namespace std; int ...
- 【Java数据结构与算法】实现二叉树的先根,中根,后根,层次遍历
创建一如下二叉树结构,并分别采用四种遍历:先根,中根,后根,层次遍历.并在 main 中编写测试用例,输出四种遍历结果. 先根:根-->左子树-->右子树 中根:左子树-->根--& ...
- 若依前后端分离vue 中项目上线后 图片预览无法显示问题
这里看到 图片返回的url地址里面 图片前缀名多了个 /prod - api 导致图片无法预览 找到components 里面的imagetwo 里面的index.vue这里只需要在url上传图片组件 ...
- 二叉树的层序遍历与镜像翻转js
题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 . (即逐层地,从左到右访问所有节点). 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,2 ...
最新文章
- jquery zoom jquery放大镜特效
- 评价cnblogs.com的用户体验
- Python 3.x 引入了函数注释
- linux修改磁盘盘符,debian下修改磁盘阵列盘符
- 量化策略回测BoolC
- linux 内核编程 延时函数,linux中内核延时编程
- 深度学习之经典卷积神经网络的技术浅析 | 硬创公开课预告
- 去掉flash player自带的fff新推荐广告插件
- 如何使用计算机自带的刻录软件,Win7系统自带光盘刻录功能如何使用?
- 下载英文图书的几个网站
- 无线wifi盒子用不用拉网线?
- Three——二、加强对三维空间的认识
- Kerberos (一) --------- Kerberos 部署
- 利用人工智能和进化分析,绘制出真核生物的蛋白质之间相互作用的3D模型
- 基于改进层次凝聚聚类算法的垃圾收运跨区域调度策略
- 分享一个英文词语翻译成中文的数据
- python菜鸟教程学习:数据结构
- 织梦 DEDECMS LOOP标签的用法及调用
- java内省和反射机制_Java内省和反射机制三步曲之 - 内省
- dedecms 5.7SP1实现获得当前栏目父栏目ID
热门文章
- 2019年 支付宝集福攻略
- 区块链与金融基础设施——兼论Facebook Libra
- 自动控制原理MATLAB命令
- c语言程序设计试题1253,2017年1月试卷号1253C语言程序设计A.pdf
- 高中数学必修一:集合高考典型例题解题技巧方法
- Vulkan_Shader—高级光照_阴影_原理
- 蓝桥杯真题 13省Cc1-猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于
- CentOS 6.7 源码搭建LNMP架构部署动态网站环境
- 一、【s3c2440移植linux-3.5】移植准备
- TCP/IP详解卷1:第十四章 DNS 域名系统