/*** @Description 定义一个二叉树* @auther Eleven* @create 2020-04-05 19:27**/
public class BinaryTree {TreeNode rootNode;public void setRootNode(TreeNode rootNode) {this.rootNode = rootNode;}public TreeNode getRootNode() {return rootNode;}public void fontShow() {if(rootNode !=null){rootNode.fontShow();}}public void middleShow() {if(rootNode !=null) {rootNode.middleShow();}}public void afterShow() {if(rootNode !=null) {rootNode.afterShow();}}public TreeNode fontSearch(int i) {return rootNode.fontSearch(i);}public void deleteNode(TreeNode deleteNode) {if (deleteNode == rootNode){rootNode=null;return;}rootNode.deleteNode(deleteNode);}
}
/*** @Description 二叉树树点数据* @auther Eleven* @create 2020-04-05 19:27**/
public class TreeNode {//节点数int data;//左节点TreeNode leftNode;//右节点TreeNode rightNode;public TreeNode(int data) {this.data = data;}public void setLeftNode(TreeNode leftNode) {this.leftNode = leftNode;}public void setRightNode(TreeNode rightNode) {this.rightNode = rightNode;}//前序遍历public void fontShow() {//先遍历自己System.out.println(this.data);//再遍历左节点if(leftNode !=null){leftNode.fontShow();}//遍历右节点if(rightNode!=null){rightNode.fontShow();}}//中序遍历public void middleShow() {//遍历左侧if(leftNode!=null){leftNode.middleShow();}//遍历自己System.out.println(this.data);if(rightNode!=null){rightNode.middleShow();}}//后序遍历public void afterShow() {//遍历左侧if(leftNode!=null){leftNode.afterShow();}if(rightNode!=null){rightNode.afterShow();}//遍历自己System.out.println(this.data);}/*** 前序查找* @param i* @return*/public TreeNode fontSearch(int i) {TreeNode target = null ;if (this.data  == i ){return this;}if (leftNode!=null){target =  leftNode.fontSearch(i);}if (target==null){if (rightNode!=null){target = rightNode.fontSearch(i);}}return target;}/*** 删除树节点* @param deleteNode*/public void deleteNode(TreeNode deleteNode) {if (this.leftNode!=null && this.leftNode == deleteNode){this.leftNode=null;return;}if (this.rightNode!=null && this.rightNode == deleteNode ){this.rightNode=null;return;}if (this.leftNode != null){this.leftNode.deleteNode(deleteNode);}if (this.rightNode !=null){this.rightNode.deleteNode(deleteNode);}}
}
/*** @Description 测试类* @auther Eleven* @create 2020-04-05 19:27**/
public class Test {public static void main(String[] args) {//首先创建一个树对象BinaryTree binaryTree = new BinaryTree();//定义一个root节点TreeNode root = new TreeNode(1);//把节点设置到树中binaryTree.setRootNode(root);//定义一个左节点TreeNode leftNode = new TreeNode(2);//设置为根节点的子节点root.setLeftNode(leftNode);//定义一个右节点TreeNode rightNode = new TreeNode(3);//设置为根节点的子节点root.setRightNode(rightNode);//定义左自己节点的二级节点TreeNode leftNode4Left = new TreeNode(4);TreeNode leftNode4Right = new TreeNode(5);leftNode.setLeftNode(leftNode4Left);leftNode.setRightNode(leftNode4Right);//定义右自己节点的二级节点TreeNode rightNode4Left = new TreeNode(6);TreeNode rightNode4Right = new TreeNode(7);rightNode.setLeftNode(rightNode4Left);rightNode.setRightNode(rightNode4Right);/*** 树的遍历是以每个树节点未操作位,进行操作的*///前序遍历binaryTree.fontShow();System.out.println("------------万恶分隔线----------------------");//中序遍历binaryTree.middleShow();System.out.println("------------万恶分隔线----------------------");//后序遍历binaryTree.afterShow();System.out.println("------------查找某个元素----------------------");/*** 树的查找是以每个树节点未操作位,进行操作的*///前序查找TreeNode node =  binaryTree.fontSearch(10);System.out.println(node);System.out.println("------------删除节点 before----------------------");//删除节点binaryTree.fontShow();binaryTree.deleteNode(rightNode4Right);System.out.println("------------删除节点 after----------------------");binaryTree.fontShow();}
}

二叉树的遍历、查找和删除相关推荐

  1. 二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历

    # -*- coding: utf-8 -*- # author: zhonghua # filename: search_binarytree.py # create: 2016/3/29 # ve ...

  2. Java版二叉树的前序遍历查找、中序遍历查找和后序遍历查找

    文章收藏的好句子:任何挫折,如果无法彻底击败你,那一定会使你更强. 目录 1.二叉树的节点查找 1.1 前序遍历查找 1.2 中序遍历查找 1.3 后序遍历查找 1.二叉树的节点查找  1.1 前序遍 ...

  3. 【二叉树详解】二叉树的创建、遍历、查找以及删除等-数据结构05

    二叉树 1. 二叉树简介 定义: 每一个结点的子节点数量不超过 2 二叉树的结点分为:左节点.右节点 满二叉树: 每个结点都有两个子结点的二叉树(除了叶子结点外) 完全二叉树: 除去最后一层,是一个满 ...

  4. Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树、二叉查找树的插入节点、二叉查找树的删除、二叉树的遍历、平衡二叉树)C 语言实现

    Algorithm:树相关算法(BBT/BST/B树/R树)简介(二叉查找树.二叉查找树的插入节点.二叉查找树的删除.二叉树的遍历.平衡二叉树)C++语言实现 目录 树的基础知识 1.二叉树的遍-前序 ...

  5. 树节点的遍历,查找,删除(前序,中序,后序)

    二叉树模板类: class BinaryTree {private Node root;public void setRoot(Node root) {this.root = root;}//删除结点 ...

  6. 二叉树的遍历与查找(详细笔记)

    博客主页小吴_小吴有想法_CSDN博客-leetcode,笔记,java领域博主 欢迎关注点赞收藏和留言 天道酬勤,勤能补拙,和小吴一起加油吧  17岁大一新生,水平有限,恳请各位大佬指点,不胜感激! ...

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

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

  8. 二叉树 遍历 查找指定节点

    数据结构与方法: public class MyBinaryTree<E> {//根节点private Node root;public void setRoot(Node root) { ...

  9. 二叉树 1.0 -- 创建二叉树、遍历二叉树、二叉树常见问题求解

    树的结构主要是为了查找,这个主要是为了搜索,树的结构关注的不是增删查改 树 广义上面的树的结构我们不知道树的一个节点是有几个子节点的,所以这个时候我们需要定义的一种结构就是,一个节点的孩子是可以动态的 ...

  10. 一种基于平衡二叉树(AVL树)插入、查找和删除的简易图书管理系统

    目录 1. 需求分析 2. 项目核心设计 2.1 结点插入 2.2 结点删除 3 测试结果 4 总结分析 4.1 调试过程中的问题是如何解决的,以及对设计与实现的回顾讨论和分析 4.2 算法的时间和空 ...

最新文章

  1. shell脚本教学进阶——Linux三大文本处理工具之grep
  2. To connect to files.phpmyadmin.net insecurely, use `--no-check-certificate‘
  3. 系统app无法访问外部存储设备问题
  4. 泡泡玛特,走出“盲盒”?
  5. TSS详解 ——《x86汇编语言:从实模式到保护模式》读书笔记33
  6. WEBMIN在命令行下的安装
  7. 获取excel名称java_使用Apache POI获取大型Excel文件的Excel工作表名称
  8. 解析Json的格式.
  9. redis4数据类型.更新HyperLogLog类型
  10. python字典长度可变吗_[python] 根据字典中的信息生成列表,每次都会额外变长。...
  11. 发票专用驱动sjz_增值税发票选择确认平台使用手册
  12. Java主流开发框架
  13. 【181023】VC++开发的电路板画图设计软件源代码
  14. 在Mac下如何制作win7/win10启动盘
  15. Git报错:Git failed with a fatal error. Git failed with a fatal error. Need to specify how to reconcile
  16. 2022Q4手机银行新版本聚焦提升客群专属、财富开放平台、智能化能力,活跃用户规模6.91亿人
  17. tampermonkey自动化学习(持续更新~)
  18. 解决问题(七)——jsf+spring+hibernate整合(一)
  19. win10 开机软件自动启动设置
  20. 一套.Net Core学校管理系统源码

热门文章

  1. uni-app引入iconfont字体成功后显示黑白色?怎么让其保留原本色彩,已解决!
  2. 逗比的输入法实现(二):基础概念和常用接口
  3. RT-Robot助力机器人开发,让你再也不用重复“造轮子”
  4. 适配全面屏方法(无效)
  5. 案例:创建一个学生管理系统(PXSCJ1)的数据库(SQL)
  6. 《Microsoft Power BI数据可视化与数据分析》之超市运营数据分析
  7. 腾讯云开源业界微服管理框架 Femas
  8. elementUI-Table+Pagination实现的常见分页表格(附封装好的Vue组件代码)
  9. mysql四种常用的索引_四种常见的索引类型
  10. c语言内存修改,中国式家长的做弊实现之利用c语言进行内存修改