数据结构之二叉树基础知识总结
来源:互联网 发布:js 遍历对象 编辑:程序博客网 时间:2024/05/22 04:48
1、本质问题——
树不是线性表,是一种描述非线性层次关系的数据结构。是N个数据结点的集合。
2、基本特征——
- 有且仅有一个结点没有直接前驱,那就是根节点;
- 除了根结点外,其他结点有且仅有一个直接前驱;
- 每个结点可以有任意后继结点;
一个树结构可以为空,没有任何结点;如果仅仅包含一个结点,那也叫一个树。
3、基本概念——
- 兄弟结点——拥有同一个父结点的结点;
- 结点的度——一个结点所包含子树的数量;
- 树的度——该树所有结点中最大的度;
- 叶子结点——树中度为零的结点,也叫终端结点;
- 结点的层数——从根结点开始算,根结点是第一层,依次往下。
- 有序树——树中的各结点的子树(兄弟结点)从左到右按一定次序去排列的树;
- 森林——N棵互不相交的树的集合。
4、二叉树——
- 特点——每个结点最多只有两个子结点,可以没有或者只有一个。
- 分类:
- 满二叉树:除了最下面一层的叶子结点外,其他结点都有两个子结点;
- 完全二叉树:除了最下面一层的叶子结点外,其他各层结点数达到最大个数,而且最后一层叶子结点按照从左到右的顺序连续存在,只缺最后一层若干结点;
5、存储方式
顺序存储就是从根结点开始一层层地按顺序存储在数组里,但是只适用于完全二叉树,因为非完全二叉树的话,要进行补全才可方便进行
6、二叉树的遍历
- 先序:先访问根结点,后是左子树,到右子树;
- 中序:先左子树,后根结点,最后是右子树;
- 后序:先左子树,后右子树,最后根结点。
7、题目训练——
(1)题目——二叉树遍历
题目描述:
二叉树的前序、中序、后序遍历的定义:
前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;
中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;
后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。
给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。
输入:
两个字符串,其长度n均小于等于26。
第一行为前序遍历,第二行为中序遍历。
二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。
输出:
输入样例可能有多组,对于每组测试样例,
输出一行,为后序遍历的字符串。
样例输入:
ABC
BAC
FDXEAG
XDEFAG
样例输出:
BCA
XEDGAF
来源:
2006年清华大学计算机研究生机试真题
自己的程序——呜呜,还没调试出来,今天太晚了,明天写好就贴出来。
0 0
- 数据结构之二叉树基础知识总结
- 【数据结构】二叉树基础知识
- 二叉树基础知识总结
- 实用数据结构总结之二叉树遍历
- 数据结构之 排序二叉树总结
- 数据结构---二叉树总结
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- Linux环境编程之IPC进程间通信(二):管道
- Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
- python简单速度测试
- python --enumerate用法
- Java 九九乘法
- 数据结构之二叉树基础知识总结
- Java数据库连接池封装与用法
- Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现
- POJ 3829 Seat taking up is tough
- 作为一个程序员,你的进步完全取决于你自己
- Matlab中size,length,numel的讨论
- cocos2dX 之CCScene的创建原理和切换方式
- ASP.NET MVC学前篇之扩展方法、链式编程
- iOS 本地化多语言支持