`
百合不是茶
  • 浏览: 354931 次
社区版块
存档分类
最新评论

二叉树数据结构

阅读更多

 

一个节点可以有多个下级节点,但只有一个上级节点

 

 

二叉树:

一个节点可以有不多于两个的下级节点,但只有一个上级节点



 

完全二叉树

满二叉树

B树

B+树

B-树

 

 

二叉树的遍历方式:

先序遍历  中序遍历   后序遍历

 

 

JAVA实现二叉树的代码;

   

package com.Tree.com;
/**
 * 定义树
 * @author Administrator
 *
 */
public class TreeNode {
 //树
	
	Object obj;
	TreeNode parent;//父节点
	TreeNode leftnode;//左子节点
	TreeNode rightnode;//右子节点
	
	public TreeNode(Object obj){
	this.obj  = obj;
	}

	@Override
	public String toString(){
		return (String)obj;	
	}
}

 

    树的构建关系及遍历二叉树的三种方式,代码如下;

package com.Tree.com;

//树
public class tree {
	public TreeNode creatNode() {
		// 创建节点
		TreeNode root = new TreeNode("根");
		TreeNode root1 = new TreeNode("左");
		TreeNode root2 = new TreeNode("右");
		
		TreeNode root3 = new TreeNode("左左");
		TreeNode root4 = new TreeNode("左右");
		TreeNode root5 = new TreeNode("右左");
      
		
		root.leftnode = root1;
		root.rightnode = root2;
		root1.parent = root;
		root2.parent = root;
        //root1父节点的左边和右边的节点
		root1.leftnode = root3;
		root1.rightnode = root4;
		
		//root3和root4都是root1的子节点
		root3.parent = root1;
		root4.parent = root1;
        
		//root2左边的节点是root5,root5的父节点是root3
		root2.leftnode = root5;
		root5.parent = root3;

		return root;
	}


 

     二叉树的先序遍历方式

	// 先序遍历的方法
	public void TreePrint(TreeNode root) {
		
		//遍历根节点
		System.out.println(root);	
		//遍历左子节点
		TreeNode left = root.leftnode;
		//判断左边是否为空
		if (left != null) {
			//递归
			TreePrint(left);
		}
		//遍历右子节点
		TreeNode right = root.rightnode;
		//判断右边是否为空
		if (right != null) {
			//递归
			TreePrint(right);
		}

	}

	

 

//打印二叉树
	public static void main(String[] args) {
		tree tr = new tree();
		//创建节点的关系
		TreeNode root = tr.creatNode();
		//打印输出节点
		tr.TreePrint(root);

	}

}

 

 

运行结果(先序遍历)输出  根-左-右:

    根

左左

左右

右左

 

//中序遍历

public void TreePrint(TreeNode root) {
		
		
		//遍历左子节点
		TreeNode left = root.leftnode;
		//判断左边是否为空
		if (left != null) {
			//递归
			TreePrint(left);
		}
		
		//遍历根节点
		System.out.println(root);
		//遍历右子节点
		TreeNode right = root.rightnode;
		//判断右边是否为空
		if (right != null) {
			//递归
			TreePrint(right);
		}

	}

      

 

输出结果(左-中-右):

左左

左右

右左

 

 

//后续遍历

public void TreePrint(TreeNode root) {
		
		
		//遍历左子节点
		TreeNode left = root.leftnode;
		//判断左边是否为空
		if (left != null) {
			//递归
			TreePrint(left);
		}
		
	
		//遍历右子节点
		TreeNode right = root.rightnode;
		//判断右边是否为空
		if (right != null) {
			//递归
			TreePrint(right);
		}
		//遍历根节点
		System.out.println(root);

	}

 

 

后序遍历(左-右-根);

左左

左右

右左

 

  • 大小: 10.7 KB
1
0
分享到:
评论
1 楼 543089122 2014-07-20  
又见有人开始学习数据结构,以前也写过,呵呵

相关推荐

    二叉树数据结构课程设计

    ### 二叉树数据结构课程设计相关知识点 #### 一、需求分析 ##### 1.1 课程设计题目 本次课程设计的任务是实现一个能够直观显示二叉树的函数`displaytree`。该函数接收三个参数:二叉树的根指针、数据值宽度以及屏幕...

    C语言中文网 Go语言二叉树数据结构的应用 源码

    C语言中文网 Go语言二叉树数据结构的应用 源码。一开始以为“btree”是golang的包呢。后来发现不是。又找以为是“https://github.com/google/btree.git”。发现还不是。这才想起来可能是自己写的包。绕了一圈子。 ...

    二叉树数据结构上机实验

    根据给定的文件信息,我们可以总结出以下关于“二叉树数据结构上机实验”的相关知识点: ### 实验概述 本实验旨在通过编程实践来帮助学生深入理解二叉树这一重要的数据结构,并掌握其基本操作的实现方法。实验提供...

    二叉树数据结构上机实验报告

    二叉树数据结构是计算机科学中的一个重要概念,它在数据组织和算法设计中扮演着核心角色。本上机实验报告将深入探讨二叉树的基本概念、操作和应用,旨在帮助初学者更好地理解和掌握这一主题。 首先,二叉树是一种...

    二叉树 数据结构实验 c语言写的控制台程序

    本实验是关于二叉树数据结构的实践,使用C语言编写,以控制台程序的形式展示。C语言作为底层编程语言,能够提供对硬件更直接的访问,因此非常适合实现这样的数据结构操作。 首先,我们要理解二叉树的基本概念。...

    C++类机制实现二叉树数据结构

    在这个项目中,我们将通过类机制来实现一个二叉树数据结构。这涉及到C++的面向对象编程特性,包括类的定义、构造函数、析构函数、成员函数、封装以及继承等概念。 首先,我们来看`BiTree.h`文件,这是定义二叉树...

    链表二叉树数据结构实验

    在这个“链表二叉树数据结构实验”中,我们将探讨三种关键的数据结构概念:链表、二叉树以及排序算法,并通过实际应用来加深理解。 首先,链表是一种线性数据结构,其中的元素并不在物理内存中连续存储。每个元素...

    java实现二叉树数据结构

    java实现二叉树数据结构,简单明了,免费下载

    按层次遍历二叉树 数据结构课程设计

    "按层次遍历二叉树数据结构课程设计" 本知识点主要介绍了按层次遍历二叉树的算法设计和实现,包括二叉树的存储结构设计、主要算法设计、测试用例设计和调试报告等。 一、问题描述和任务定义 按层次遍历二叉树是指...

    c++ 语言实现 二叉树 数据结构代码

    这个压缩包文件包含了用C++实现二叉树数据结构的代码,下面我们将深入探讨相关知识点。 首先,我们要了解二叉树的基本操作。这些操作包括创建、插入节点、删除节点、遍历和查找。在C++中,我们可以定义一个二叉树...

    平衡二叉树数据结构课程设计

    平衡二叉树是一种特殊的二叉树数据结构,它在保持二叉查找树特性的同时,通过特定的结构调整策略,确保了树的高度平衡。这样的设计使得在平衡二叉树中执行插入、删除和查找等操作的时间复杂度可以保持为O(log n),...

    以C++类的方式实现二叉树数据结构完整版

    用C++类机制实现二叉树数据结构,接口具备如下功能: 构造空树;销毁树;按定义构造树;清空树;判断树是否为空;返回树深度;返回树的根;返回节点值;为节点赋值;返回节点双亲; 返回节点左孩子;返回节点右孩子...

    二叉树数据结构报告书

    《二叉树数据结构报告书》是对数据结构中二叉树这一重要概念的深入探讨,主要涉及了概要设计、详细设计、测试用例、调试分析以及心得体会五个方面。二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常...

    树\二叉树数据结构PPT

    通过这个“树\二叉树数据结构PPT”学习,你将能掌握树和二叉树的基本概念、操作及其实现方法,为后续学习更高级的数据结构和算法打下坚实的基础。PPT课件数据结构将提供丰富的图示和实例,以直观的方式帮助理解抽象...

    二叉树 数据结构

    二叉树是一种重要的数据结构,它在计算机科学中扮演着至关重要的角色,特别是在算法和数据组织方面。...通过理解和熟练运用二叉树数据结构,开发者能够编写出更高效、更优雅的代码,解决各种复杂问题。

    树和二叉树 数据结构课件

    【树和二叉树 数据结构课件】 在计算机科学中,树是一种非线性数据结构,广泛用于数据组织和算法设计。第六章“树和二叉树”主要讲解了树的基本概念、二叉树的定义以及相关的操作。 **树的定义和基本术语** 树是...

    DNA计算机中基于顺序存储方式的二叉树数据结构.pdf

    本文研究的重点是DNA计算机中二叉树数据结构的设计问题,尤其是基于顺序存储方式的二叉树。 在顺序存储模型中,二叉树被表示为双链DNA分子。对于一个完全二叉树,它的所有节点元素按照从根节点开始,从左到右,从上...

Global site tag (gtag.js) - Google Analytics