概念

非线性结构,一对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

 

 二叉树的遍历

递归

非递归

二叉树的层次遍历

思路:使用一个队列。第一步,将根节点入队。第二步,队不空时循环,队列中第一个元素出队并访问它;若它有左孩子结点,将左孩子结点进队,若它有右孩子结点,右孩子结点进队。循环结束,出队的顺序及层次遍历。

线索二叉树

如果某个结点的左孩子为空,则将空的左孩子指针域改为指向其前驱;如果某结点的右孩子为空,则将空的右孩子指针域改为指向其后继。这种改变指向的指针称为“线索”。

posted @ 2022-06-28 17:44  阳zzz  阅读(142)  评论(0)    收藏  举报