二叉树算法大全(树和二叉树经典算法)
二叉树算法大全(树和二叉树经典算法)· 中序遍历除去第一棵树之外其余的树组成的森林· 访问第一课树的根结点typedef struct btnode { DataType data; struct btnode *lchild *rchild;//指向左右孩子的指针 }*BinTree;typedef struct btnode { DataType data; struct btnode *lchild *rchild;//指向左右孩子的指针 }*BinTree;顺序存储结构链式存储结构4. 二叉树的遍历5. 树和森林树的遍历5.1.1. 先序遍历void preorder(BinTree bt) { if (bt!=NULL) { visit(bt); preorder(bt->lchild); preorder(bt->rchild);
树和二叉树
二叉树的顺序结构
二叉树的链式存储结构
二叉链表的类型定义如下:
typedef struct btnode
{
DataType data;
struct btnode *lchild *rchild;//指向左右孩子的指针
}*BinTree;
typedef struct btnode
{
DataType data;
struct btnode *lchild *rchild;//指向左右孩子的指针
}*BinTree;
顺序存储结构链式存储结构4. 二叉树的遍历5. 树和森林树的遍历5.1.1. 先序遍历
void preorder(BinTree bt)
{
if (bt!=NULL)
{
visit(bt);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
5.1.2. 后序遍历
void inorder(BinTree bt)
{
if(bt!=NULL)
{
inorder(bt->lchild);
visit(bt);
inorder(bt->rchild);
}
}
5.1.3. 层次遍历
void postorder(BinTree bt)
{
if(bt!=NULL)
{
postorder(bt->lchild);
postorder(bt->rchild);
visit(bt);
}
}
森林的遍历5.1.4. 先序遍历森林(若森林非空)
· 访问森林中第一棵树的根节点
· 先序遍历森林第一课树的根结点的子树组成的森林
5.1.5. 中序遍历森林· 中序遍历森林中第一课树的根结点的子树组成的森林;
· 访问第一课树的根结点
· 中序遍历除去第一棵树之外其余的树组成的森林
6. 判定树和哈夫曼树分类与判定树哈夫曼(Huffman)树与哈夫曼算法哈夫曼编码在通信领域,可以应用哈夫曼树来设计字符传输的编码树有广泛的应用,其中一种重要的应用是描述分类过程。分类是一种常用的运算,其作用是输入秘书局按预定的标准划分成不同的种类7. 线性结构中的一个节点至多只有一个直接后继,而树形结构中一个节点可以有一个或多个直接后继8. 二叉树通常有两类存储