足球世界杯视频

【数据结构】树

1.树

1.1 树的特性

树是不包含回路的连通无向图 树的特性: 一棵树的任意两个结点有且仅有唯一的一条路连通; 一颗树有n个结点,那么就一定恰好有n-1条边; 在一棵树加一条边将会构成一个回路;

1.1.1树的存储结构

//孩子结点

struct childnode

{

int child; //孩子结点的坐标

struct childnode *next;//指向下一个孩子的指针

};

//表头结构

struct tbox

{

int data; //存放在树中结点的数据

int parent; //存放双亲的下标

struct childnode *firstchild;//指向第一个孩子的指针

};

//树结构

struct tree

{

struct tbox t[2020];//结点数组

}

1.2 二叉树

1.2.1

特点:每个结点最多有两个儿子

1.2.2:

满二叉树:如果二叉树中每个内部的结点都有两个儿子 完全二叉树:除了最右边的位置有一个或几个叶结点缺少外,其他是丰满的。

如果完全二叉树的一个父结点编号为k 那么它左二子的编号为2k 右二子的编号为2k+1 如果已知儿子的编号是x 那么它父结点的编号就是x/2 如果一颗完全二叉树有n个结点,哪儿买这个完全二叉树的高度为log以2为底n

1.2.3二叉树的存储结构

1.链式存储结构

struct bitnode

{

int data;

struct bitnode *lchild,*rchild;//分别指向左右结点

};

1.2.4二叉树的遍历

前序遍历:

若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树

中序遍历

若树为空,则空操作返回,否则从根结点开始(并不是指先遍历根结点,而是当遍历下一个左节点为空时遍历根节点),中序遍历根节点的左子树,然后访问根节点,最后中序遍历根节点的右子树。

后序遍历

若树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右结点,最后访问根节点

1.2.5树的创建与前序遍历

#include

#include

#include

typedef