数据结构------树(Java语言描述)

embedded/2024/11/28 5:12:53/

一、的基本概念

是一种非线性的数据结构,它由节点组成,有一个特定的节点称为根节点,其余节点可以分为多个互不相交的子

中的节点具有以下特点:

1.每个节点有零个或多个子节点。

2.除了根节点外,每个节点有且仅有一个父节点。

3.没有父节点的节点就是根节点,没有子节点的节点称为叶子节点。

二、代码示例

下面是二叉的代码示例(Java语言)

java">package dataStructure.tree;//二叉的节点类
public class TreeNode {//用来保存节点的数据int data;//用来保存该节点的左右子节点TreeNode left;TreeNode right;//使用构造方法来限制节点对象必须有值public TreeNode(int data){this.data = data;}
}
java">package dataStructure.tree;//二叉类
public class BinaryTree {//二叉的根节点private TreeNode root;//往二叉中添加数据public void add(int e) {//先创建节点对象,然后再判断他要放到什么位置TreeNode node = new TreeNode(e);if (root == null) {//如果当前是空的,则把该节点作为根节点root = node;} else {add(root, node);}}private void add(TreeNode t, TreeNode n) {if (n.data < t.data) {if (t.left == null) {t.left = n;return;}add(t.left, n);} else {if (t.right == null) {t.right = n;return;}add(t.right, n);}}//前序遍历public void preOrder() {preOrder(root);}private void preOrder(TreeNode node) {if (node == null) {return;}System.out.println(node.data);preOrder(node.left);preOrder(node.right);}//中序遍历public void middleOrder() {middleOrder(root);}private void middleOrder(TreeNode node) {if (node == null) {return;}middleOrder(node.left);System.out.println(node.data);middleOrder(node.right);}//后序遍历public void rearOrder() {rearOrder(root);}private void rearOrder(TreeNode node) {if (node == null) {return;}rearOrder(node.left);rearOrder(node.right);System.out.println(node.data);}public static void main(String[] args) {BinaryTree bt = new BinaryTree();bt.add(10);bt.add(5);bt.add(15);bt.add(3);bt.add(8);bt.add(2);bt.add(4);bt.add(7);bt.add(9);bt.add(12);bt.add(18);bt.add(11);bt.add(13);bt.add(16);bt.add(20);bt.preOrder();System.out.println("-----------------------------------------------");bt.middleOrder();System.out.println("-----------------------------------------------");bt.rearOrder();}
}

 


http://www.ppmy.cn/embedded/141101.html

相关文章

SQL99版链接查询语法

连接查询按照功能分类 内连接 等值连接 非等值连接 自连接 //92SQL 外连接&#xff1a; //红色的连接查询类型92版SQL 左外连接 右外连接 全外连接 交叉连接 #剩下连接类型的SQL语法就不是前面同一个发布版本了 99版SQL语法格式区别于92版的是连接不在是用“”了&am…

平安科技Java面试题及参考答案

多个线程 a++,单个线程不管别的线程怎么改变 a 的值,只管自己的 a 的值,但是只有一个对象 在 Java 中,当多个线程对同一个对象的共享变量 a 进行 a++ 操作时,如果不进行适当的同步处理,就会出现数据不一致的问题。因为 a++ 操作并非原子操作,它实际上包含了读取 a 的值、…

爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具

第三节&#xff1a;使用Postman和浏览器开发者工具 在网络爬虫开发过程中&#xff0c;我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具&#xff08;特别是Network面板和Console面板&#xff09;是两种最常用的工具&#xff0c;能够帮助开发者有效地捕…

【go】查询某个依赖是否存在于这个代理

1. 使用 go list 命令 go list -m -versions github.com/gin-gonic/gin 如果模块存在&#xff0c;该命令会返回模块及其可用版本&#xff1a; github.com/gin-gonic/gin v1.7.0 v1.7.1 v1.8.0如果模块不存在或无法找到&#xff0c;会返回错误。 2. 使用 curl 查询代理服务 …

计算机毕业设计Python+卷积神经网络CNN交通标志识别 机器学习 深度学习 爬虫 数据可视化 人工智能 模型训练

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Python毕业设计选题:基于django+vue的4S店客户管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 员工信息管理 个人中心 车辆信息管理 售后服务管理 售后安排管理 车辆信…

零基础Java第二十一期:异常(一)

目录 一、异常的概念与体系 1.1. 异常的概念 1.2. 异常的体系结构 1.3. 异常的分类 二、异常的处理 2.1. 防御式编程 2.2. 异常的抛出 2.3. 异常的捕获 一、异常的概念与体系 1.1. 异常的概念 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常。异常是…

详解八大排序(一)------(插入排序,选择排序,冒泡排序,希尔排序)

文章目录 前言1.插入排序&#xff08;InsertSort&#xff09;1.1 核心思路1.2 实现代码 2.选择排序&#xff08;SelectSort&#xff09;2.1 核心思路2.2 实现代码 3.冒泡排序&#xff08;BubbleSort&#xff09;3.1 核心思路3.2 实现代码 4.希尔排序&#xff08;ShellSort&…