C语言数据结构——树和二叉树

本文介绍了树形结构在计算机科学中的基本概念,包括树的定义、节点类型(如根、叶、分支)、相关术语(如度、层次、高度、有序与无序树以及森林),详细阐述了这些术语的含义和应用。
摘要由CSDN通过智能技术生成

树形结构是一种重要的非线性的结构,在计算机科学中有着广泛的应用。树是依据分支关系定义的层次结构,在这种结构中,每个数据元素最多有一个前驱,但可以有多个后继;数据元素之间的关系是一对多的层次关系,其中二叉树最为常用。

树(tree)是n个节点的有限合集。当n = 0时,集合为空集,成为空树,否则称为非空树。在任意一棵非空树中:

1.有且仅有一个特定的称为根的节点

2.当n>1时,除根节点以外其余的节点可以分为m个互不相交的集合T1, T2, T3, T4.....Tm,其中每个集合的本身又是一棵树,并称为根的子树

 关于树要注意的几点:

n>0时根节点是唯一的,不可能存在多个根节点。

m>0时,子树的个数是不受限制的,但是它们一定是不相交的

在树中,只有根节点没有直接前驱的,而根节点以外的其余节点都是有且只有一个直接前驱的。基于树的这个特点,画树的示意图时一般都将根节点画在最上面

关于树的其他的表示形式:

广义表示法:

(A(B(E(G),F),C(H,I),D(J,K)))

树的基本术语:

节点(node),表示树中的元素,包含一个数据和若干个指向其子树的分支;

节点的度:一个节点的子树个数称为此节点的度,如在上图中,节点A的度为3,B的度为2,K的度为0;

叶节点:度为0的节点,即无后继的节点,又称为终端节点,在上图中K,F,G.H,I,J就可以叫做叶节点;

分支节点:度不为零的节点,又称为非终端节点,在上图中A,B,C,D都可以叫做分支节点

孩子节点:一个节点的直接后继称为该节点的孩子节点。在上图中节点B,C,D都被叫做A的孩子节点

双亲节点:一个节点的直接前驱称为该节点的双亲节点,在上图中A是B,C,D的双亲节点

兄弟节点: 同一个双亲节点的孩子节点之间又称为兄弟节点,在上图中H,I,H称为兄弟节点

祖先节点: 一个节点的祖先节点是指从根节点到该节点的路径上的所有节点。

子孙节点: 一个节点的直接后继和间接后继称为该节点的子孙节点

树的度:树中所有节点的最大值,上图中树的度为3;

节点的层次:从根节点开始进行定义,根节点的层次为1,根节点的直接后继的层次为2,以此类推,节点B,C,D在层次2,节点K在第四层。

树的高度(深度):树中所有层次的最大值,如上图中的树的最大值为4

有序树和无序数:如果将树中节点的各子树看成是从左到右是有次序的,则称该树为有序树,否则称为无序树。

森林:m棵互不相交的树的集合,将一棵非空树的根节点删去,树就变成了一个森林,反之,给森林增加一个统一的根节点,森林就变成了一棵树

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值