数据结构 | 树

树相关知识点:

1. 在树型结构中,一般最顶端者称为根(root),由根开始延伸节点(node),所延伸出的其他节点称为分支节点(branch node),最底端不再延伸的节点称为终端节点(terminal node),连接两节点的线称为边(Edge)。

2. 二叉树(Binary Tree)的定义:每个节点最多只能有2个子节点的树,即每个节点的最大分支度为2或0。

3. 满二叉树(Full Binary Tree)的定义:是一个二叉树,所有的外部节点都必须在同一层。

4. 完全二叉树(Complete Binary Tree)的定义:外节点相差的阶数在1阶以内,含0阶(0阶即是满二叉树)。

5.  二叉树的遍历:

  •    中序遍历(LDR):先遍历左子树,再遍历此节点,最后遍历右子树,因为该节点在中间被遍历,所以称为中序遍历(inorder traversal)。
  •    后序遍历(LRD):先遍历左子树,再遍历右子树,最后遍历节点,节点最后被遍历,所以此法称为后序遍历(postorder traversal)。
  •    前序遍历(DLR):先遍历节点,再遍历左子树,最后遍历右子树,节点最先被遍历,所以称为前序遍历(preorder traversal)。
  •    阶层遍历(level-order traversal):依阶层的顺序遍历,先访问阶层小的所有节点,同一阶层由左而右遍历,再往下一阶层遍历,以此类推。

6. 表达式的处理和计算是每种程序语言必须处理的过程,由于表达式的处理需考虑运算符的优先级,而且大部分的运算符都有两个操作数(除了正负号之外),而二叉树的左右子树也有顺序之分,所以可以将表达式表示成二叉树,称为二叉运算树(Binary Expression Tree)。再以二叉树的遍历方法即能计算出表达式的值。

7. 堆的定义

  •    最大堆:为一个完全二叉树,任一非终端节点的数据不小于其子节点的数据。
  •    最小堆:为一个完全叉树,任一非终端节点的数据不大于其子节点的数据。

8. 堆的应用

  •    一般的队列具有先进先出的特性,在队列中的元素,先到先处理,不会根据各个元素的优先级(或称权重)高低来选择处理。如果要对一般的队列实现优先级高的任务先处理时,其作法是在队列中找出优先级最高者。假如有n个元素,未经排列且用线性查找法时,其时间复杂度为,当n很大时,则堆的比线性查找的效率高许多。
  •    堆排序:要得到由小到大的排序,需建立最大堆;要得到由大到小的排序,需建立最小堆。

9. 二叉查找树的定义:二叉查找树是一个二叉树,可能为空二叉树,若不是空二叉树,则满足下列条件:

  •    所有节点的数据都不同。
  •    左子节点的数据比父节点的数据小。
  •    右子节点的数据比父节点的数据大。
  •    以左、右节点为树根的左、右子树也要具备二叉查找树的条件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值