⼆叉树
⼏个基本概念
不包含任何结点的⼆叉树为空树
只包含⼀个结点的⼆叉树是⼀棵单点树
⼀棵⼆叉树可以包含任意(有穷个)个结点
⼀棵⼆叉树的根结点称为该树的⼦树根结点的⽗结点;与之对应,⼦树的根结点称为⼆叉树树根结点的⼦结点
⽗结点相同的两个结点称为兄弟结点,在⼆叉树中有些结点的两棵⼦树都空,没有⼦结点,这种结点称为树叶。树中其余结点称为分⽀⼏点。⼀个结点的⼦结点个数称为该结点的度数
⼀棵⼆叉树只能有五种形态:空⼆叉树;只有根结点;只有根结点和左⼦树;只有根结点和右⼦树;或者两棵⼦树俱全。
⾸尾相连的边称为树中的⼀条路径,路径汇总的边数称为该路径的长度;从⼀棵⼆叉树的根结点到该树中的任⼀结点都有路径,⽽且唯⼀。
⼆叉树是⼀种层次结构,从树根到树中任⼀结点的路径长度就是该结点所在的层数。⼀个⼆叉树的⾼度是树中结点的最⼤层数
二叉树的基本性质 满⼆叉树:如果⼆叉树中所有分⽀结点的度数都是2,则称他为⼀棵满⼆叉树。满⼆叉树⾥的叶结点⽐分⽀结点多⼀个
扩充⼆叉树:扩充⼆叉树中新增的结点称其为外部结点,原树的结点称为内部结点
完全⼆叉树:对于⼀个⾼为h的⼆叉树,如果其第0层⾄第h - 1 层的结点都满。如果最下⼀层的结点不满,则所有结点在最左边连续排列,空位都在右边。这样的⼆叉树是⼀棵完全⼆叉树。
⼆叉树的性质:
⼆叉树最重要的性质就是树的⾼度和树中可以容纳的最⼤结点输之间的关系。在肠胃n的表⾥只能容纳n个结点,⾥⾯搞为h的⼆叉树中则可能容纳⼤约n**h个结点,这是表与树的最⼤不同
性质:在飞空⼆叉树第i层中之多有2**i个结点(i>=0)
性质:⾼度为h的⼆叉树之多有(2**k-1) - 1 个结点
性质:对于任何⾮空⼆叉树T,如果其叶结点的个数n0,度数为2的结点度数为n2,那么 n0 = n2 + 1
性质:(完全⼆叉树)n个结点的完全⼆叉树⾼度为h = 【log2n】,即为不⼤于log2n 的最⼤整数
性质:(完全⼆叉树)如果n个结点的完全⼆叉树的结点按层次并按从左到右的顺序崇0开始编号,对任⼀结点i都有:
序号为0的结点是根
对于i>0,其腹肌诶单的编号是(i-1)/2
若2 x i + 2 < n,其左⼦结点序号为 2 x i+ 1,否则他⽆左⼦结点
若2 x i + 2 < n,其右⼦结点序号为 2 x i+ 2,否则他⽆右⼦结点
遍历⼆叉树
每棵⼆叉树都有唯⼀的根结点,可看做这个⼆叉树的唯⼀标⽰,也是处理树结构的⼊⼝。遍历⼆叉树⼀般存在两种⽅式:深度优先遍历,⼴度优先遍历
深度优先遍历:
需要做的三件事:遍历左⼦树,遍历右⼦树和访问根结点,以L,R,D为例
常见的三种遍历顺序:
先根序遍历(DLR)
中根序遍历(LDR)
后根序遍历(LRD)
⽰例:
宽度优先遍历
宽度优先是按路径长度由近到远的访问(不能写成递归的过程),实现这⼀算法需要⼀个队列作为缓存 上图按宽度优先遍历的序列为:A B C D E F G H I J K
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论