it编程 > 软件设计 > 数据结构

【数据结构】树

91人参与 2024-08-06 数据结构


在讲二叉树之前,我们先需要简单了解一下树的相关知识。

树的定义

树的定义如下:树(tree)是n个节点的有限集。n=0时称为空树。在任意一颗非空树中:

  1. 有且仅有一个特定的称为根(root)的节点;
  2. 当n>1时,其余节点可分为m(m>0)个互不相交的有限集t1、t2、···、tm。其中每一个集合本身又是一棵树,并且称为根的子树(subtree)。
    树

注意事项

节点的分类

树的节点包含一个数据元素及若干个指向其子树的分支。
在将树的分类之前先介绍度概念:

分类:

节点间的关系

关系如下:

树的表示方法

树有多种表示方法。

双亲表示法

树这种结构除了根节点外,其余每个节点,不一定有孩子节点,但是一定有且仅有一个双亲节点。

假设一段连续空间存储树的节点,将根结点的parent值为-1,其余节点的parent存储双亲节点的下标。

public class tree{
	public treenode [] elem;//节点数组
	public int r;//根的位置
	public int n;//节点个数
	static class treenode{
		int data;//节点数据
		int parent;//双亲位置
	}
}

孩子表示法

使用多重链表,每个节点有多个指针域,其中每个指针指向一颗子树的根节点。
由于树中每个节点的度是不一样的,所以有两种方式。

public class tree{
	public treenode []elem;//节点数组
	int r;//跟的位置
	int n;//节点数
	static class treenode{
		int child;
		treenode next;
	}
}

孩子兄弟表示法

任意一棵树,它的节点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。
因此我们使用两个指针,分别指向该节点的第一个孩子和此节点的右兄弟。

class treenode {
    int value; // 树中存储的数据
    node firstchild; // 第一个孩子引用
    node nextbrother; // 下一个兄弟引用
}

概念总结

关于树的重要概念总结如下:

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

数据结构之初始二叉树(4)

08-06

【数据结构】详解二叉树与堆与堆排序的关系

08-06

【数据结构】排序(上)

08-06

Druid【基础 01】是什么+主要特点+设计原则+架构+数据结构(简单入门Druid)

08-06

算法与数据结构:二叉排序树与AVL树

08-06

【数据结构】队列——循环队列(详解)

08-06

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论