Java数据结构系列之——树(2):二叉树的实现及其常用操作

package tree.binarytree;

public class BiTreeNode {
	int data;
	BiTreeNode leftNode;
	BiTreeNode rightNode;

	public BiTreeNode(){
		leftNode=null;
		rightNode=null;
	}

	public BiTreeNode(int data,BiTreeNode leftNode,BiTreeNode rightNode){
		this.data=data;
		this.leftNode=leftNode;
		this.rightNode=rightNode;
	}
}

*******************************************************************************

package tree.binarytree;

public class BiTree {
	public BiTreeNode root;//根节点

	public BiTree(){//空树
		this.root=null;
	}

	//传入数据域,左子树,右子树构建二叉树
	public BiTree(int data,BiTree leftchild,BiTree rightchild){
		BiTreeNode left,right;

		if(leftchild==null){
			left=null;
		}else{
			left=leftchild.root;
		}

		if(rightchild==null){
			right=null;
		}else{
			right=rightchild.root;
		}

		this.root=new BiTreeNode(data, left, right);
	}

	//插入结点
	public void insert(int data){
		BiTreeNode newNode=new BiTreeNode(data,null,null);
		BiTreeNode current=root;//当前结点
		BiTreeNode parent;//父节点

		if(root==null){
			root=newNode;
			return;
		} else {
			while (true) {
				parent = current;

				if (current.data > data) {
					current = current.leftNode;
					if (current == null) {
						parent.leftNode = newNode;
						return;
					}
				} else {
					current = current.rightNode;
					if (current == null) {
						parent.rightNode = newNode;
						return;
					}
				}

			}
		}
	}

	//查找
	public BiTreeNode find(int data){
		if(root==null){
			throw new RuntimeException("二叉樹為空");
		}

		BiTreeNode current=root;

		while(current.data!=data){
			if(current.data>data){
				current=current.leftNode;
			}else{
				current=current.rightNode;
			}

			if(current==null){
				return null;
			}
		}
		return current;
	}
}
时间: 2024-11-05 12:25:22

Java数据结构系列之——树(2):二叉树的实现及其常用操作的相关文章

Java数据结构系列之——树(4):二叉树的中序遍历的递归与非递归实现

package tree.binarytree; import java.util.Stack; /** * 二叉树的中序遍历:递归与非递归实现 * * @author wl * */ public class BiTreeInOrder { // 中序遍历的递归实现 public static void biTreeInOrderByRecursion(BiTreeNode root) { if (root == null) { return; } biTreeInOrderByRecursi

Java数据结构系列之——树(5):二叉树的后序遍历的递归与非递归实现

package tree.binarytree; import java.util.Stack; /** * 二叉树后序遍历的递归与非递归实现 * * @author wl * */ public class BitreePostOrder { // 后序遍历的递归实现 public static void biTreePostOrderByRecursion(BiTreeNode root) { if (root == null) { return; } biTreePostOrderByRe

Java数据结构系列之——树(6):二叉树的层序遍历

package tree.binarytree; import java.util.LinkedList; /** * 层序遍历二叉树 * * @author wl * */ public class PrintFromTopToBotton { public static void printfromtoptobotton(BiTreeNode root) { if (root == null) { return; } LinkedList<BiTreeNode> queue = new L

Java数据结构系列之——树(1):二叉树基本概念及特点小结

度的概念:结点拥有的子树数称为结点的度(degree).度为0的结点称为叶结点(leaf)或者终端结点.度不为0的结点称为非终端结点或者分支结点.除根节点以外,分支结点也称为内部结点.树的度是树内部结点的度的最大值. 树的深度或者高度:结点的层次从根开始定义起,根为第一层,根的孩子为第二层.树中结点的最大层次称为树的深度或者高度. 树的表示法:(1)双亲表示法(2)孩子表示法(3)孩子兄弟表示法 二叉树:二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和

D&amp;F学数据结构系列——B树(B-树和B+树)介绍

B树 定义:一棵B树T是具有如下性质的有根树: 1)每个节点X有以下域: a)n[x],当前存储在X节点中的关键字数, b)n[x]个关键字本身,以非降序存放,因此key1[x]<=key2[x]<=...<=keyn[x][x], c)leaf[x],是一个布尔值,如果x是叶子的话,则它为TRUE,如果x为一个内节点,则为FALSE. 2)每个内节点包含n[x]+1个指向其子女的指针c1[x],c2[x],...,cn[x]+1[x].叶节点没有子女,故它们的ci域无意义. 3)各关键

二叉树的性质和常用操作代码集合

二叉树的性质和常用操作代码集合 性质: 二叉树的性质和常用代码操作集合 性质1:在二叉树的第i层上至多有2^i-1个结点 性质2:深度为k的二叉树至多有2^k - 1个结点 性质3:对任意一棵二叉树T,若终端结点数为n0,而其度数为2的结点数为n2,则n0 = n2 + 1 满二叉树:深度为k且有2^-1个结点的树 完全二叉树:深度为k,结点数为n的二叉树,如果其结点1~n的位置序号分别与等高的满二叉树的结 点1~n的位置序号一一对应,则为完全二叉树. 性质4:具有n的结点的完全二叉树深度为lo

数据结构实践项目——树和二叉树(1)

本文针对[数据结构基础系列(6):树和二叉树]第1-10课时 1 树结构导学 2 树的基本概念 3 树的基本术语 4 树的性质 5 树的存储结构 6 二叉树概念和性质 7 二叉树与树.森林之间的转换 8 二叉树的存储结构 9 二叉树的基本运算及其实现 10 二叉树的遍历 [项目1 - 二叉树算法库] 定义二叉树的链式存储结构,实现其基本运算,并完成测试. 要求: 1.头文件btree.h中定义数据结构并声明用于完成基本运算的函数.对应基本运算的函数包括: void CreateBTNode(BT

数据结构实践项目——树和二叉树(2)

本文针对数据结构基础系列(6):树和二叉树第7, 11-15课时 7 二叉树与树.森林之间的转换 11 二叉树遍历非递归算法 12 层次遍历算法 13 二叉树的构造 14 线索二叉树 15 哈夫曼树 [项目1 - 二叉树算法验证] 运行并重复测试教学内容中涉及的算法.改变测试数据进行重复测试的意义在于,可以从更多角度体会算法,以达到逐渐掌握算法的程度.使用你的测试数据,并展示测试结果,观察运行结果,以此来领会算法. (1)层次遍历算法的验证 [参考链接] (2)二叉树构造算法的验证 [参考链接]

数据结构和算法 (二)数据结构基础之树、二叉树

Java面试宝典之二叉树的实现 我们接着上一篇数据结构继续讲解.本章系数据结构之树与二叉树,从这章开始,我们就要介绍非线性结构了,这些内容理解起来比线性表稍难一些,我尽量写的通俗一些,如果读的过程中有任何问题,请按上述方式联系我! 一.树 树 形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树结构在客观世界中是大量存在的,例如家 谱.行政组织机构都可用树形象地表示.树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结