`

数据结构(树)

 
阅读更多

树形结构是一类重要的非线性数据结构。其中以树和二叉树最为常用。

树的概念

    树是n(n≥0)个结点的有限集。在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每一个集合本身又是一颗树,并且称为根的子树。

树的基本术语

    树的结点包含一个数据元素以及若干指向其子树的分支。结点拥有的子树数称为结点的。度为0的结点称为叶子或终端结点。度不为0的结点称为非终端结点或分支结点。除根节点之外,分支结点也称为内部结点。树的是树内各结点度的最大值。结点的子树的根称为该结点的孩子,相应的该结点称为孩子的双亲。同一个双亲的孩子之间互称为兄弟。结点的祖先是从根到该节点所经历分支上的所有的结点。反之,以某结点为根的子树中的任一结点都称为该节点的子孙。结点的层次从根开始定义,树中结点的最大层次称为根的深度或高度。

二叉树的概念

    二叉树是另一种树型结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,不能随意颠倒顺序。

    二叉树可以有5种基本的形态:



 

package arithmetic;


public class BiTreeImpl implements BiTreeOpI {

	static BiTree root;

	@Override
	public void createBiTree() {
		root = new BiTree(1);
		BiTree leftChild = new BiTree(2);
		root.setLeftChild(leftChild);
		BiTree rightChild = new BiTree(3);
		root.setRightChild(rightChild);

		leftChild.setLeftChild(new BiTree(4));
		leftChild.setRightChild(new BiTree(5));

		rightChild.setLeftChild(new BiTree(6));
		rightChild.setRightChild(new BiTree(7));
	}

	public static void main(String[] args) {
		BiTreeImpl biTreeImpl = new BiTreeImpl();
		biTreeImpl.createBiTree();
		System.out.print("先序:");
		biTreeImpl.preOrderTraverse(root);
		System.out.println();
		System.out.print("中序:");
		biTreeImpl.inOrderTraverse(root);
		System.out.println();
		System.out.print("后序:");
		biTreeImpl.postOrderTraverse(root);
	}

	@Override
	public void preOrderTraverse(BiTree root) {
		if(root != null) {
			System.out.print(" " + root.getData() + " ");
			preOrderTraverse(root.getLeftChild());
			preOrderTraverse(root.getRightChild());
		}
	}

	@Override
	public void inOrderTraverse(BiTree root) {
		if(root != null) {
			preOrderTraverse(root.getLeftChild());
			System.out.print(" " + root.getData() + " ");
			preOrderTraverse(root.getRightChild());
		}
		
	}

	@Override
	public void postOrderTraverse(BiTree root) {
		if(root != null) {
			preOrderTraverse(root.getLeftChild());
			preOrderTraverse(root.getRightChild());
			System.out.print(" " + root.getData() + " ");
		}
	}
}

 

  • 大小: 122.3 KB
分享到:
评论

相关推荐

    java数据结构树

    根据给定的信息,本文将详细解释“Java数据结构树”的相关内容。这包括对标题和描述中的知识点进行深入探讨,以及从部分提供的内容中提取出的关键信息。 ### Java数据结构树 #### 学习Java数据结构的最佳教程 在...

    算法与数据结构树的c++实现

    本文将详细讨论“算法与数据结构树的C++实现”这一主题,包括树的概念、树的类型、C++中实现树的基本方法以及如何在MFC环境中应用。 首先,我们来理解树的基本概念。树是一种非线性的数据结构,它由节点(或称为...

    数据结构 树和二叉树ppt教程

    【数据结构:树和二叉树】 树是一种非线性的数据结构,它的基本概念和术语在计算机科学中至关重要,尤其在算法设计和数据组织中扮演着核心角色。树的定义基于递归,一棵非空树包含一个根节点,以及一组互不相交的...

    C#数据结构树的查询实例源码TreeView空间的应用实例源码

    C#数据结构树的查询实例源码TreeView空间的应用实例源码 foreach (TreeNode node1 in this.treeView1.Nodes[i].Nodes) { if (node1.Text == textBox2.Text.Trim()) { treeView1.SelectedNode = node1; ...

    C++的数据结构 树 的源代码

    在这些数据结构中,"树"是一种非线性的数据结构,它由节点(也称为顶点)和边(连接节点的关系)组成,模拟了自然界中的层次关系。在C++中,树数据结构被广泛应用于各种算法,如搜索、排序、图遍历等。以下将详细...

    数据结构 树的应用

    数据结构中关于树的应用 帮助我们更好地学习树这一章的ppt

    数据结构 树、二叉树的数据结构 哈夫曼树

    2. 实现哈夫曼树数据结构,使用哈夫曼树完成如下文档的编码与译码,假设该文档由5种符号字符(A、B、C、D、E)构成 ABACDEABBCEABAACCCDEACCBAABCCCA 3. 选做:实现二叉树的中序遍历线索化数据结构 4. 选做:使用...

    数据结构 树的广度优先 算法 C++

    数据结构 树的广度优先 算法 C++ 实验上机 数据结构范例 实验 C++

    数据结构树和二叉树学习资料

    关于数据结构的课程资料 包含树与二叉树的相关内容 树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有...

    unity 数据结构树的深度遍历

    结合unity数据结构树的深度遍历。可以参考https://www.bilibili.com/video/av36337427?t=280 学习

    数据结构树的遍历

    本文档包含了树的遍历,能够运行。可以加深大家对于树 的结构认识,可以对先序中序后序遍历有更多理解

    数据结构树的操作实验报告

    数据结构树的操作实验报告

    数据结构树算法详细代码

    数据结构中的树是一种非线性数据结构,它以分层的方式组织数据,每个节点可以有零个或多个子节点。在计算机科学中,理解和掌握树的算法是至关重要的,因为它们广泛应用于搜索、排序、图形处理、编译器设计、数据库...

    数据结构树与二叉树

    数据结构树与二叉树

    树和森林--清华大学课程讲义-数据结构(PPT).ppt

    树和森林--清华大学课程讲义-数据结构(PPT).ppt

    数据结构课程设计(树)

    数据结构课程设计中,主题是关于树的实现,特别是孩子链表示法,这是一种在树结构中存储节点子节点的方式。在这种表示法中,每个节点包含一个数据域和一个指向其子节点的指针数组。在这个特定的设计中,我们看到一个...

    数据结构——树结构.ppt

    "数据结构——树结构.ppt"这份文件很显然是一个关于树结构的讲座或教程材料,它可能涵盖了树的基本概念、算法实现以及实际应用。 首先,我们要理解树的基本概念。树是一种非线性的数据结构,由若干个节点(或称为...

    数据结构树与二叉树.cpp

    数据结构树与二叉树.cpp

Global site tag (gtag.js) - Google Analytics