树
树
概念
非线性结构,一对n,一个元素后面有多个后继结点。
特点:结点之间有分支,具有层次关系
基本术语
结点:数据元素以及指向子树的分支
根节点:没有前驱结点的结点
结点的度:结点拥有的子树数
树的度:树内结点的度最大值
叶子结点:又叫终端结点,无分支的结点
分支结点:有分支的结点
内部结点:根节点以外的分支结点
孩子:某个结点的子树的根结点
双亲:某个子树根节点的前驱结点
堂兄弟:双亲在同一层的结点
结点的祖先:从根到该节点所经过分支上的所有结点
结点的子孙:以某结点为跟的子树中的任一结点
树的深度:树中结点的最大层次,又称高度
有序树:树中结点的各子树从左至右有次序
无序数:区别于有序树
森林:m(>=0)颗树互不相交的树的集合,一颗树可以看成一个特殊的森林
二叉树
特点:结构简单,规律性最强。所有的树都可以专为唯一对应的二叉树,不失一般性。
定义
每个结点做多有两个孩子
子树有左右之分,其次序不能颠倒
二叉树可以是空集合,根可以有空的子树
注:二叉树结点的子树一定要区分左右,即使只有一颗子树
满二叉树:一个深度为k且有2^k-1个结点的二叉树。
满二叉树特点,每一层的结点数都是最大结点数,叶子结点全部在最底层
完全二叉树:深度为k的具有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号1~n的结点一一对应时,称之为完全二叉树。
完全二叉树的特点:叶子结点只可能分布在层次最大的两层上,对任一结点,如果其右子树的最大层次为i,则其左子树的最大层次必为i或i+1
性质
1.在二叉树的第i层上至多有2^(i-1)个结点(i>=1),至少有1个结点
2.深度为k的二叉树至多有2^k-1个结点(k>=1),至少有k个结点
3.对于任何一个二叉树T,如果叶子数为n0,度为2的结点数为n2,则n0=n2+1
4.具有n个结点的完全二叉树的深度为【long2 ^n】+1(表示向下取整+1)
5.如果对一颗有n个结点的完全二叉树中的各个结点按程序编号,则对第i个结点,其双亲结点的编号为【i/2】,即i/2向下取整,左孩子结点是2i,右孩子结点编号是2i+1
二叉树的遍历
递归
非递归
二叉树的层次遍历
思路:使用一个队列。第一步,将根节点入队。第二步,队不空时循环,队列中第一个元素出队并访问它;若它有左孩子结点,将左孩子结点进队,若它有右孩子结点,右孩子结点进队。循环结束,出队的顺序及层次遍历。
线索二叉树
如果某个结点的左孩子为空,则将空的左孩子指针域改为指向其前驱;如果某结点的右孩子为空,则将空的右孩子指针域改为指向其后继。这种改变指向的指针称为“线索”。
浙公网安备 33010602011771号