标签:
1、定义:树是一种非线性结构,是一种一对多的数据结构。
分析树的结构,我们用递归的方法,根结点下面又可以看做是子树。
2、树的存储结构:
我们一般用孩子兄弟法存储。也就是把一个结点的左边第一个孩子放在此结点的左边孩子,把此结点的右兄弟放在此结点的右边孩子。
这样就产生了二叉树。
二叉树和树可以相互对应。
3、二叉树及其性质
总之二叉树有很多特殊的性质,直接研究树会有些麻烦,所以我们通过研究二叉树进而来研究树。
而二叉树的很多特性,可以帮我们解决很多问题,比如与查找问题和排序问题。
4、二叉树的存储
二叉树的存储一般使用链表的方式,也就是二叉链表。
5、遍历二叉树
前序遍历,中序遍历,后序遍历
6、二叉树的建立
以前序遍历的方式为例,建立二叉树。核心是采用递归的方式。
#include <stdlib.h> #include "conio.h" #include <stdio.h> //定义树的结点的结构体 typedef struct TreeNode { char data; struct TreeNode * lchild; struct TreeNode * rchild; }TreeNode,*BiTree; BiTree createtree(BiTree T) { char ch; scanf("%c",&ch); if(ch == '#') T = NULL; else { T = (TreeNode *)malloc(sizeof(TreeNode)); T->data = ch; T->lchild=createtree(T->lchild); T->rchild=createtree(T->rchild); } return T; } void pretree(BiTree T) { if(T) { printf("%c",T->data); pretree(T->lchild); pretree(T->rchild); } } void main() { BiTree T; T = createtree(T); pretree(T); }
(1)树---》二叉树:把左边第一个孩子放在左边孩子,右边兄弟放在右边孩子
(2)森林--》二叉树:把每棵树转化为二叉树,然后把后一棵树的根节点作为上一棵树右孩子
(3)二叉树--》树
8、赫夫曼树
标签:
原文地址:http://blog.csdn.net/a879365197/article/details/46591913