码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构——树

时间:2015-06-22 12:29:02      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

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);


}

7、树,二叉树,森林的相互转化

(1)树---》二叉树:把左边第一个孩子放在左边孩子,右边兄弟放在右边孩子

(2)森林--》二叉树:把每棵树转化为二叉树,然后把后一棵树的根节点作为上一棵树右孩子

(3)二叉树--》树


8、赫夫曼树


数据结构——树

标签:

原文地址:http://blog.csdn.net/a879365197/article/details/46591913

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!