当前位置: 首页 > news >正文

java-数据结构-顺序存储二叉树

需求: 给你一个数组 {1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历。 前序遍历的结果应当为 1,2,4,5,3,6,7
在这里插入图片描述

package com.tree;

public class ArrBinaryTreeDemo {

	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5, 6, 7 };
		//创建一个 ArrBinaryTree
		ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr);
		arrBinaryTree.preOrder(); // 1,2,4,5,3,6,7
	}

}

//编写一个ArrayBinaryTree, 实现顺序存储二叉树遍历

class ArrBinaryTree {
	private int[] arr;//存储数据结点的数组

	public ArrBinaryTree(int[] arr) {
		this.arr = arr;
	}
	
	//重载preOrder
	public void preOrder() {
		this.preOrder(0);
	}
	
	//编写一个方法,完成顺序存储二叉树的前序遍历
	/**
	 * 
	 * @param index 数组的下标 
	 */
	public void preOrder(int index) {
		//如果数组为空,或者 arr.length = 0
		if(arr == null || arr.length == 0) {
			System.out.println("数组为空,不能按照二叉树的前序遍历");
		}
		//输出当前这个元素
		System.out.println(arr[index]); 
		//向左递归遍历
		if((index * 2 + 1) < arr.length) {
			preOrder(2 * index + 1 );
		}
		//向右递归遍历
		if((index * 2 + 2) < arr.length) {
			preOrder(2 * index + 2);
		}
	}
	
}

运行结果

1
2
4
5
3
6
7

相关文章:

  • java-数据结构-线索化二叉树
  • java-数据结构-大顶堆和小顶堆
  • java-数据结构-赫夫曼树(Huffman Tree)
  • java-数据结构-哈夫曼编码(Huffman Coding)
  • java批量修改文件名工具类
  • deepin安装后wps提示缺少字体
  • Unknown initial character set index '45' received from server
  • 阿里云maven公共代理库
  • deepin安装anaconda后,创建图标
  • 论一只爬虫的自我修养——python使用代理
  • Android Studio打开工具栏
  • Android Studio入门小例子
  • 如何证明素数个数无限个
  • java运用itextpdf批量添加书签
  • Python3学习第四天
  • [译] 怎样写一个基础的编译器
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular Elements 及其运作原理
  • emacs初体验
  • ES6系统学习----从Apollo Client看解构赋值
  • flask接收请求并推入栈
  • gops —— Go 程序诊断分析工具
  • GraphQL学习过程应该是这样的
  • js中forEach回调同异步问题
  • LeetCode算法系列_0891_子序列宽度之和
  • mockjs让前端开发独立于后端
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue全家桶实现一个Web App
  • 关于for循环的简单归纳
  • 今年的LC3大会没了?
  • 力扣(LeetCode)357
  • 前端性能优化--懒加载和预加载
  • 深度学习入门:10门免费线上课程推荐
  • 深度学习在携程攻略社区的应用
  • 首页查询功能的一次实现过程
  • zabbix3.2监控linux磁盘IO
  • 通过调用文摘列表API获取文摘
  • ​Python 3 新特性:类型注解
  • #stm32驱动外设模块总结w5500模块
  • (2)STM32单片机上位机
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计ssm电影分享网站
  • (规划)24届春招和25届暑假实习路线准备规划
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .Family_物联网
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Micro Framework初体验
  • .NET 解决重复提交问题
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化