简单二叉树Java代码实现

本文详细介绍了二叉树的概念,探讨了其基本性质,并提供了Java代码示例,包括Node类的定义和MyTree类的简单二叉树创建与排序。重点在于理解节点结构和操作,如添加节点和中序遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二叉树


一、二叉树是什么?

二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。
在这里插入图片描述

二叉树的性质

性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)

性质2:深度为k的二叉树至多有2k-1个结点(k>=1)

性质3:包含n个结点的二叉树的高度至少为(log2n)+1

性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1

二、二叉树简单JAVA代码实现

1.Node(节点)

代码如下(示例):

public class Node {
	
	public int data;//数据
	public Node leftNode;//左节点
	public Node rightNode;//右节点
	
	/**
	 * 添加节点 
	 * @param t 新节点
	 */
	public void addNode(Node t){
		if(t.data<this.data){//新增节点数据比此节点数据小时
			if(leftNode == null)//此节点没有左节点时,就把此节点作为左节点
				 leftNode = t;
			else//有左节点时,递归调用addNode()直到没有左节点为止
				 leftNode.addNode(t);
		}else{//新增节点数据比此节点数据大时
			if(rightNode == null)//此节点没有右节点时,就把此节点作为右节点
				 rightNode = t;
			else//有右节点时,递归调用addNode()直到没有右节点为止
				rightNode.addNode(t);
		}		
	}
	/**
	 * 中序遍历 
	 * @param 
	 */
	public void zhongxu(){
		if(leftNode!=null) leftNode.zhongxu();
		System.out.println(data);
		if(rightNode!=null) rightNode.zhongxu();
	}

}

中序遍历:左子树->根节点->右子树(左->根->右)
步骤:
第一步:访问该节点左子树

第二步:若该节点有左子树,则返回第一步,否则打印该节点

第三步:若该节点有右子树,则返回第一步,否则结束递归并返回上一节点

2.MyTree(简单二叉树)

代码如下(示例):

public class MyTree {
	private  Node root;//根节点
	/**
	 * 添加数据 
	 * @param x 传进来的数据添加到树中
	 */
	public void add(int x){
		Node  p = new Node();
		p.data = x;
		if(root == null)//没有根节点时,以新传进来的数据作为根节点
			root = p;
		else
			root.addNode(p);
	}
	/**
	 * 排序
	 * @param 
	 */
	public void sort(){
		if(root == null) return;
		root.zhongxu();
	}
}

总结

节点作为构造二叉树的基本,需要深刻理解左节点和右节点的逻辑思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值