java编写非递归与递归创建有序的二叉树

java非递归与非递归创建有序的二叉树

在这里插入图片描述

二叉树

二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树,且有左右之分 。
二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点

二叉树是数据结构中的线性存储的结构,那什么叫有序的二叉树呢?不然就是在存储数据的时候是按照数据大小进行存储,在java语言中也存在此结构的类ThreeSet类,它是一个容器,用来存放数据且其中不能存放相同元素,因为.二叉树认为能够存放在树形结构中的元素都是有序元素。例如定义一组数据{7,2,8,1,4,3,5},在树形结构中如下图所示。
在这里插入图片描述
二叉树的遍历过程中有三种方式,分别是先序、中序和后序,通常情况下要熟悉三种遍历的方式。一般中序输出是有顺序的,从小到大或者从大到小。
现在我们需要构建一颗普通二叉树(不具有顺序)

二叉树的创建

二叉树实则是一颗倒立着的树,拥有结点、左右子结点,所以构建二叉树的结构具有很多方式,而二叉树的样式也有很多,接下来重点介绍三种不同方式创建二叉树,分别是普通无序二叉树,有序递归和有序非递归创建二叉树。

二叉树的成员变量

构建基本的成员变量

public class Node {
   //构建一个二叉树结点类
	public Node leftNode;//左节点
	public Node rightNode;//右节点
	public int data;//结点里存放的数据
	public Node root;//根节点
	public List<Node>datas;//构建结点的集合
	public Node() {
   //无参的构造方法
	}
	public Node(Node leftNode,Node rightNode,int date) {
   //初始化一个结点
		this.leftNode=leftNode;
		this.rightNode=rightNode;
		this.date=date;
	}
	public Node(int date) {
   //初始化只包含一个数据的结点
		this(null,null,date);
	}
}
接下来构建普通的二叉树方法(非递归)
public void createNode(int[] arr){
   
datas = new ArrayList<Node>();
for(int i:arr){
   
datas.add(new Node(i));
}
root = datas.get(0);//初始化根节点
for(int i=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛牛最爱喝兽奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值