public class BinaryTreeDemo {public static void main(String args[]){Employee emp1= new Employee(1,"李洛");Employee emp2= new Employee(2,"张元清");Employee emp3= new Employee(3,"牧尘");Employee emp4= new Employee(4,"萧炎");Employee emp5= new Employee(5,"许七安");BinaryTree binaryTree =new BinaryTree(emp1);emp1.setLeft(emp2);emp1.setRight(emp3);emp2.setLeft(emp4);emp2.setRight(emp5);
//        binaryTree.preOrder();//12453
//        binaryTree.delEmployee(emp1);binaryTree.delEmployee(emp5);binaryTree.preOrder();
//        binaryTree.infixOrder();//42513
//        binaryTree.lastOrder();//45231}
}class BinaryTree{private Employee root;public BinaryTree(Employee root) {this.root = root;}public Employee getRoot() {return root;}public void setRoot(Employee root) {this.root = root;}//前序遍历public void preOrder(){if (this.root!=null){this.root.preOrder();}else {System.out.println("二叉树为空,无法遍历。");}}//中序遍历public void infixOrder(){if (this.root!=null){this.root.infixOrder();}else{System.out.println("二叉树为空,无法遍历。");}}//后序遍历public void lastOrder(){if (this.root!=null){this.root.lastOrder();}else {System.out.println("八嘎!");}}//删除节点public void delEmployee(Employee emp){if(this.root!=null){if(root==emp){root=root.getLeft();return;}else {this.root.delEmployee(emp);}}else {System.out.println("二叉树为空,无法删除!");}}}class Employee{private int id;private String name;private Employee left;private Employee right;public Employee(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Employee getLeft() {return left;}public void setLeft(Employee left) {this.left = left;}public Employee getRight() {return right;}public void setRight(Employee right) {this.right = right;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Employee employee = (Employee) o;return id == employee.id &&Objects.equals(name, employee.name) &&Objects.equals(left, employee.left) &&Objects.equals(right, employee.right);}@Overridepublic int hashCode() {return Objects.hash(id, name, left, right);}@Overridepublic String toString() {return "Employee{" +"id=" + id +", name='" + name + '\'' +'}';}//删除节点public void delEmployee(Employee emp){if(this.getLeft()==emp){if(this.getLeft().getLeft()==null&&this.getLeft().getRight()==null){this.setLeft(null);}else{if (this.getLeft().getLeft()!=null){this.setLeft(this.getLeft().getLeft());}else{this.setLeft(this.getLeft().getRight());}}return;}if(this.getRight()==emp){if(this.getRight().getLeft()==null&&this.getRight().getRight()==null){this.setRight(null);}else{if (this.getRight().getLeft()!=null){this.setRight(this.getRight().getLeft());}else{this.setRight(this.getLeft().getRight());}}return;}if(this.getLeft()!=null){this.getLeft().delEmployee(emp);}if(this.getRight()!=null){this.getRight().delEmployee(emp);}}//前序遍历public void preOrder(){System.out.println(this);if(this.getLeft()!=null){this.getLeft().preOrder();}if (this.getRight()!=null){this.getRight().preOrder();}}//中序遍历public void infixOrder(){if (this.left!=null){this.left.infixOrder();}System.out.println(this);if (this.right!=null){this.right.infixOrder();}}//后序遍历public void lastOrder(){if (this.left!=null){this.left.lastOrder();}if (this.right!=null){this.right.lastOrder();}System.out.println(this);}}

共勉!

二叉树删除节点以及前中后序遍历相关推荐

  1. 前中后序遍历-java模板代码

    前中后序遍历的知识 1.前序遍历:先遍历根节点,再按照根-左-右的顺序遍历根节点的左子树,最后按照根-左-右的顺序遍历根节点的右子树. 2.中序遍历:先遍历根节点的左子树,按照左-根-右的顺序遍历完之 ...

  2. 二叉树前中后序遍历以及节点计算

    二叉树前中后序遍历以及节点计算 二叉树 分类 二叉链的数据结构 三叉链的数据结构 四种遍历方法 深度优先遍历:前中后序 广度优先遍历:层序遍历 计算 节点个数 叶子节点个数 树的高度 第k层的节点个数 ...

  3. [Leedcode][JAVA][第94/144/145题][前中后序遍历][递归][迭代][二叉树]

    [问题描述][] 前序遍历 先输出当前结点的数据,再依次遍历输出左结点和右结点 中序遍历 先遍历输出左结点,再输出当前结点的数据,再遍历输出右结点 后续遍历 先遍历输出左结点,再遍历输出右结点,最后输 ...

  4. 数据结构-二叉树(包含二叉树的层次建树、前中后序遍历、层次遍历解析及代码)

    目录 一.树与二叉树的原理解析 1.树的定义 2.树的结构和特点 3.二叉树的定义 4.树结点的数据结构 二.二叉树的层次建树 1.二叉树层次建树的原理及分析 2.完整代码 三.二叉树的前中后序遍历 ...

  5. 二叉树N叉数的前中后序遍历总结,python实现递归法和迭代法

    关于二叉树的前序遍历(preoder).中序遍历(inorder)和后序遍历(postorder),实际上只需要记住:左子节点一定在右子节点的左边(左右),所谓前中后序遍历就是根节点的位置不同,前序是 ...

  6. 二叉树的层序遍历和前中后序遍历代码 迭代/递归

    二叉树的层序遍历和前中后序遍历代码 迭代/递归 只记录代码.思路参考代码随想录:https://github.com/youngyangyang04/leetcode-master/blob/mast ...

  7. 二叉树前中后序遍历的非递归实现以及层次遍历、zig-zag型遍历详解

    前言 二叉树的遍历是一个比较常见的问题,递归实现二叉树的前中后序遍历比较简单,但非递归实现二叉树的前中后序遍历相对有难度.这篇博客将详述如何使用非递归的方式实现二叉树的前中后序遍历,在进行理论描述的同 ...

  8. 二叉树非递归dfs——简单思路搞定前中后序遍历

    前言:相信很多同学都被二叉树非递归dfs的前中后序遍历方法弄的头疼.网上的答案,什么前中后序遍历各有一套写法,还有什么一个栈的写法,两个栈的写法.看起来能理解,一闭眼自己写都记不住.今天介绍一种用一种 ...

  9. 二叉树前中后序遍历+刷题【中】【数据结构/初阶/C语言实现】

    文章目录 1. 二叉树基础操作 1.1 二叉树遍历 1.1.1 前序遍历 前序遍历(Pre-Order Traversal) 1.1.2 中序遍历 中序遍历(In-Order Traversal) 1 ...

最新文章

  1. python 函数返回值的特殊情况
  2. 【CUDA学习】GPU硬件结构
  3. 初学Java,这三个阶段你经历过吗?
  4. java 文件缓冲区_Java开发笔记(八十六)通过缓冲区读写文件
  5. java 十进制 左移,java移位运算符之十进制转二进制
  6. js实现数据流(日志流,报警信息等)滚动展示,并分页(含实现demo)
  7. miui12怎么自定义开机动画_MIUI12体验:媲美iOS的细腻和流畅
  8. UG NX 12.0入门
  9. Eviews(8)进行线性回归(ols一元)与格兰杰(Granger)因果关系检验操作步骤
  10. 免费好用的证件扫描仪-扫描全能王
  11. Introduce·哲学核心期刊推荐之《哲学分析》
  12. 植物大战僵尸C语言修改器
  13. html绘制波形图,Html5 canvas 绘制心电波形图
  14. 【Git】git add
  15. Android Data Binding 初识
  16. 拒绝精神内耗,5个适合中年人的自学网站,让你脱胎换骨
  17. 困境下的SEO,站长如何自渡?
  18. 参禅静坐--虚极静笃--快速恢复脑力体力
  19. 积极主动的态度到底有多重要?
  20. 面试复盘(数据分析)

热门文章

  1. 信标网络和非信标网络
  2. 37.(cesium之家)cesium加载gltf模型(贴地)
  3. idea报错 找不到符号:类
  4. STM32外设系列—L298N
  5. Photoshop---ps cc鼠标选择图层的时候,总是莫名自动跳到了其他图层
  6. DataGrid用法集锦
  7. win11右键菜单改回win10教程(亲测可用-全流程截图)
  8. 开封商行:IT外包 与厂商度长年蜜月
  9. 小米note3无线显示电脑连接服务器,小米Note3解决WiFi锁屏时断网的方法教程
  10. 寻求91%市场的突破口 老周为何执念做机