数据结构之二叉树基础知识总结

来源:互联网 发布:js 遍历对象 编辑:程序博客网 时间:2024/05/22 04:48

1、本质问题——

树不是线性表,是一种描述非线性层次关系的数据结构。是N个数据结点的集合。

 

2、基本特征——

  • 有且仅有一个结点没有直接前驱,那就是根节点;
  • 除了根结点外,其他结点有且仅有一个直接前驱;
  • 每个结点可以有任意后继结点;

 

一个树结构可以为空,没有任何结点;如果仅仅包含一个结点,那也叫一个树。

 

3、基本概念——

 

  • 兄弟结点——拥有同一个父结点的结点;
  • 结点的度——一个结点所包含子树的数量;
  • 树的度——该树所有结点中最大的度;
  • 叶子结点——树中度为零的结点,也叫终端结点;
  • 结点的层数——从根结点开始算,根结点是第一层,依次往下。
  • 有序树——树中的各结点的子树(兄弟结点)从左到右按一定次序去排列的树;
  • 森林——N互不相交的树的集合。

 

4、二叉树——

  1. 特点——每个结点最多只有两个子结点,可以没有或者只有一个。
  1. 分类:
  • 满二叉树:除了最下面一层的叶子结点外,其他结点都有两个子结点;
  • 完全二叉树:除了最下面一层的叶子结点外,其他各层结点数达到最大个数,而且最后一层叶子结点按照从左到右的顺序连续存在,只缺最后一层若干结点;


5、存储方式

顺序存储就是从根结点开始一层层地按顺序存储在数组里,但是只适用于完全二叉树,因为非完全二叉树的话,要进行补全才可方便进行

 

6、二叉树的遍历

  • 先序:先访问根结点,后是左子树,到右子树;
  • 中序:先左子树,后根结点,最后是右子树;
  • 后序:先左子树,后右子树,最后根结点。




7、题目训练——

1)题目——二叉树遍历

题目描述:

二叉树的前序、中序、后序遍历的定义:

前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;

中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;

后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。

给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。

输入:

两个字符串,其长度n均小于等于26。

第一行为前序遍历,第二行为中序遍历。

二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。

输出:

输入样例可能有多组,对于每组测试样例,

输出一行,为后序遍历的字符串。

样例输入:

ABC
BAC
FDXEAG
XDEFAG

样例输出:

BCA
XEDGAF

 

来源:

2006年清华大学计算机研究生机试真题


自己的程序——呜呜,还没调试出来,今天太晚了,明天写好就贴出来。




0 0