Java实现二叉树的建立、计算高度与递归输出操作示例

一、建立二叉树

  1. 首先定义二叉树节点的数据结构:Node
class Node {
    int value;  // 节点值
    Node left;  // 左子树节点
    Node right; // 右子树节点

    public Node(int value) {
        this.value = value;
        left = null;
        right = null;
    }
}
  1. 使用递归的方式来建立二叉树
public Node buildTree(int[] arr, int start, int end) {
    if (start > end) {
        return null;
    }
    int mid = (start + end) / 2;
    Node root = new Node(arr[mid]);
    root.left = buildTree(arr, start, mid - 1);
    root.right = buildTree(arr, mid + 1, end);
    return root;
}
  1. 调用方法来生成二叉树并输出它的结构
int[] arr = {1, 2, 3, 4, 5, 6, 7};
Node root = buildTree(arr, 0, arr.length - 1);
System.out.println(root.value);              // 4
System.out.println(root.left.value);         // 2
System.out.println(root.left.left.value);    // 1
System.out.println(root.left.right.value);   // 3
System.out.println(root.right.value);        // 6
System.out.println(root.right.left.value);   // 5
System.out.println(root.right.right.value);  // 7

二、计算二叉树高度

使用递归的思路来计算二叉树的高度,计算方式即为左子树的高度和右子树的高度中较大值加一。

声明代码如下:

public int getHeight(Node root) {
    if (root == null) {
        return 0;
    } else {
        int leftHeight = getHeight(root.left);
        int rightHeight = getHeight(root.right);
        return (leftHeight > rightHeight) ? (leftHeight + 1) : (rightHeight + 1);
    }
}

三、递归输出二叉树

使用递归的方式来进行中序遍历,递归过程中输出节点的值即可。

public void inOrder(Node root) {
    if (root != null) {
        inOrder(root.left);
        System.out.print(root.value + " ");
        inOrder(root.right);
    }
}

示例1:

int[] arr = {1, 2, 3, 4, 5, 6, 7};
Node root = buildTree(arr, 0, arr.length - 1);
inOrder(root);  // 1 2 3 4 5 6 7

示例2:

int[] arr = {10, 20, 30, 40, 50};
Node root = buildTree(arr, 0, arr.length - 1);
inOrder(root);  // 10 20 30 40 50

以上针对Java实现二叉树的建立、计算高度与递归输出操作的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现二叉树的建立、计算高度与递归输出操作示例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Spring Boot 中使用@KafkaListener并发批量接收消息的完整代码

    下面我将详细讲解如何在Spring Boot中使用@KafkaListener实现并发批量接收消息的完整代码,包括以下内容: 引入依赖 在使用@KafkaListener接收消息之前,需要在Maven或Gradle构建文件中添加适当的依赖项。例如,使用Maven,可以添加以下依赖: <dependency> <groupId>org.…

    Java 2023年5月20日
    00
  • Maven 项目用Assembly打包可执行jar包的方法

    下面是针对 Maven 项目使用 Assembly 插件打包可执行 jar 包的完整攻略,包含了两个示例。 准备工作 首先,确保已经安装 Maven 和 JDK 并配置好环境变量。 接下来,需要在 Maven 项目中添加 Assembly 插件的依赖和配置。 在项目的 pom.xml 文件中添加以下依赖: <dependencies> … &…

    Java 2023年5月20日
    00
  • Java jar打包成exe应用程序的详细步骤

    要将Java jar程序打包为exe程序,可以通过以下步骤进行: 第一步,下载并安装Launch4j软件。Launch4j是一个免费的软件,可以将jar文件打包为Windows可执行文件,支持自定义图标、版本信息等。下载地址:http://launch4j.sourceforge.net/ 第二步,使用Launch4j软件进行配置。打开Launch4j,点击…

    Java 2023年5月23日
    00
  • Springboot使用Spring Data JPA实现数据库操作

    下面我将为您详细讲解“Springboot使用Spring Data JPA实现数据库操作”的完整攻略。 简介 Spring Data JPA是Spring框架下的一个项目,其主要目的是简化数据访问层的开发,并提供了更加优雅(简单)的方式来对关系型数据库进行操作。 步骤一:添加依赖 要想使用Spring Data JPA,我们需要先在pom.xml文件中添加…

    Java 2023年5月20日
    00
  • 大家在抢红包,程序员在研究红包算法

    让我来详细讲解一下「大家在抢红包,程序员在研究红包算法」这一话题。 首先,我们需要了解什么是「红包算法」。简单来说,红包算法就是计算如何分配一定数量的金额到多个红包里面,让每个红包的金额尽可能地公平分配。红包算法有很多种,比如「平均法」、「随机法」、「二倍均值法」等等。 接下来,我们先介绍一下「平均法」,因为这是最简单的红包算法之一。平均法的算法逻辑非常简单…

    Java 2023年5月26日
    00
  • Java 判断实体对象及所有属性是否为空的操作

    Java 判断实体对象及所有属性是否为空的操作是日常开发中经常遇到的问题之一,可以用来对数据进行合法性校验。下面将详细介绍如何实现该操作的完整攻略。 判断实体对象是否为空 判断实体对象是否为空可以通过对实体对象本身进行判断的方法实现。我们可以使用 Java 中的 == 或 null 进行判断。 示例: public boolean isObjectNull(…

    Java 2023年5月26日
    00
  • IDEA SSM框架整合配置及步骤详解

    下面就为您详细讲解“IDEA SSM框架整合配置及步骤详解”的完整攻略。 一、SSM框架简介 先来简单介绍SSM框架,SSM框架是使用Spring+SpringMVC+Mybatis三大框架集成实现的一种Java企业级应用开发框架,其中Spring主要负责业务功能的实现,SpringMVC主要负责视图层控制和请求响应的处理,Mybatis作为ORM框架进行d…

    Java 2023年5月20日
    00
  • 微信小程序以ssm做后台开发的实现示例

    下面我将详细讲解如何使用ssm框架进行微信小程序后台开发的实现示例。 一、什么是SSM框架 SSM框架实际上是Spring、SpringMVC和MyBatis三个框架的结合,可以高效稳定地进行Java Web开发。其中,Spring是用于控制Bean的,SpringMVC是用于控制请求的,MyBatis是用于控制数据的。部署方便,使用简单,很适合中小型互联网…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部