快捷搜索:  汽车  科技

二叉树算法大全(树和二叉树经典算法)

二叉树算法大全(树和二叉树经典算法)· 中序遍历除去第一棵树之外其余的树组成的森林· 访问第一课树的根结点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);

树和二叉树

二叉树算法大全(树和二叉树经典算法)(1)

1. 树的基本概念树的概念树的相关术语节点的度:树上任一结点所拥有的子树的数目称为该节点的度;叶子:度为0的结点称为叶子或终端结点。树的度:一颗树种所有结点的度的最大值称为该树的度。2. 二叉树二叉树的基本概念二叉树的性质2.1.1. 二叉树2.1.2. 子主题 22.1.3. 子主题 33. 二叉树的存储机构

二叉树的顺序结构

二叉树的链式存储结构

二叉链表的类型定义如下:

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. 二叉树通常有两类存储

猜您喜欢: