简单了解树和二叉树
来源:互联网 发布:香水时代的淘宝店怎么 编辑:程序博客网 时间:2024/06/11 15:21
树:n(n>=0)个结点的有限集。在任何一棵非空树中:
1.有且只有一个特定称为根的结点
2.n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2…..Tn,其中Ti称为树的子树。
树的结点:数据元素及若干指向其子树的分支
树的性质:递归性,层次性
一些术语的定义:
结点的度:结点拥有的子树个数
树的度:树中各结点的度的最大值
叶子(终端结点):度为零的结点
非终端结点(分支结点):度不为零的结点
结点的层次:设根结点的层次为1,第I层结点的层次为L,则第I层结点的子树根结点的层次为L+1
树的深度(高度):树中叶子结点所在的最大层次
孩子:结点子树的根称为该结点的孩子
双亲:结点就是其孩子的双亲
祖先:从根到该结点所经分支上的所有结点
子孙:以该结点为根的子树中任一结点
兄弟:同一双亲的孩子互相称为兄弟
堂兄弟:其双亲在同一层的结点互相成为堂兄弟
树的线性结构和树型结构
线性结构:第一个数据元素没有前驱,最后一个数据元素没有后继,其他元素都有一个直接前驱和一个直接后继
树型结构:根结点无前驱,所有叶子结点无后继,树中的其他结点都有一个直接前驱(双亲),多个直接后继(孩子)
有序树:树中结点的各子树从左到右有次序(不能互换)
无序树:树中结点的各子树从左到右无次序(可以互换)
森林:m(m>=0)棵互不相交的树的集合
树的表示方法:
1.树形表示法:
2.嵌套集合表示法:
3.广义表表示法:
(A(B(E,F),C(G),D(H,J,I(K))))
4.凹入表示法:
二叉树特点:
每个结点至多只有两颗子树(即二叉树中不存在度大于2的结点)
二叉树的子树有左右之分,其次序不能任意颠倒,分别称为左子树和右子树,左子树和右子树的根称为其双亲的左,右孩子
二叉树的五种不同形态:
二叉树存储结构:
顺序存储结构:用一组地址连续的存储单元依次自上而下,自左而右存储完全二叉树的结点。可通过性质5方便的求出各结点之间的关系
对一般二叉树,可将其每个结点与完全二叉树上同一位置的结点对照,存储在一维数组的相应分量中,可能对存储空间造成极大的浪费
代码表示:
#define MAX_TREE_SIZE 100typedef ElemType SqBiTree[MAX_TREE_SIZE+1];//0号单元空闲,1号单元存储根结点
链式存储结构:
1.二叉链表:
typedef struct BiTNode{ ElemType data;//数据域存储数据元素 struct BiTNode *lchild,*rchild;//两个指针域分别指向左孩子和右孩子}BiTNode,*BiTree;
eg:
三叉链表:
typedef struct TriTNode{ ElemType data;//数据域存储数据元素 struct TriNode *lchild,*rchild,*parent;//三个指针域分别指向左孩子,右孩子,双亲}TriNode,*TriTree;
eg:
- 简单了解树和二叉树
- 简单的二叉树创建和遍历
- 二叉树的简单创建和输出
- 简单二叉树的实现和遍历
- 简单二叉树的建立和遍历
- 通过编写自定义链表和二叉树增进对链表和二叉树的了解
- 平衡二叉树你了解吗?
- 教你透彻了解二叉树
- 二叉树的简单介绍和二叉树的二叉链表存储表示
- 简单二叉树实现
- 二叉树简单说明
- 二叉树简单操作
- 二叉树简单模拟
- 简单二叉树遍历
- 简单二叉树创建
- 简单二叉树
- 二叉树简单知识点
- 二叉树简单汇总
- C和指针之字符串编程练习3
- Jzoj5245 Competing Souls
- php系统参数设置
- postgresql zip install
- 克隆虚拟机centOS
- 简单了解树和二叉树
- OpenCV学习第十一篇:形态学操作
- Covering HDU
- 实训的第一次博客
- MySQL主从复制原理及搭建
- 简析分布式集群中的session一致性
- 操作系统知识清单
- 51NOD
- 学习TCP/IP协议笔记