《数据结构与算法》---树

一、基本的定义

将整体的信息分成若干个部分,再将每个部分非诚若干个子部分,这种分类可以用树形结构来表示。树是由节点和边来组成的,节点是可区分的对象,树的顶端节点称为树的根,边是节点的一个有序对<u,v>,箭头的尾指向节点u,箭头的头指向节点v,所以我们称u是边的尾,v是边的头。

二、几种特殊的树

有序树:一种特殊的树,其每个节点的子孙都有一个线性顺序。即在一个有序树中,节点的子孙有一个指定的顺序:若一个节点有k个子孙,那么毫无歧义低指明他的第一个、第二个直到第k^th个子孙。我们处理的大部分树结构都是有序树,但是有的时候子孙没有有序的树也是合理的模型,我们将他称为无序树。

二叉树:每个节点最多有两个子节点的有序树。并且当一个节点有一个子节点时,这个子节点可以被区分为左子节点或者是右子节点。当一个有序树只有两个节点时,有两种不同的二叉树:一种二叉树包含根和左子节点,另外一种是包含根和右子节点。没有节点的二叉树就是空二叉树(其实并不是一种树,因为他违背了树的节点数比边数多1的性质)。

三、树的操作和遍历

根据以上树的特性,我们可以知道,一个节点只属于单个树,那么这个节点的子节点和父节点只由该节点本身决定,这种限制给我们在查找其他节点带来便利,这样我们就可以以这个节而不是整个树作为参数来传递了,简单罗列一些方法:

parent(v):返回节点v的父节点,如果是根节点返回^

children(v):返回节点v的子节点集合,没有返回^

rightSibling(v):返回v的右兄弟,如果v是根节点或者v是其父节点最右边的子节点,返回^

firstchild:返回节点v的第一个子节点,如果v是树叶返回^

...

遍历分为前序、后序和中序(只与二叉树有关)遍历

四、树的实现

三种基本的特殊类型的存储表示法:一般二叉树、一般有序树和完全二叉树,不管是什么类型的树,在每个节点都有一个info字段来表示节点的信息。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值