数据结构——树的简单操作集合

非常多数据结构的书上解说数据机构时都是採用伪代码实现。事实上感觉蛮不直观的。所以对于全部的数据结构操作我都将其用C实现一遍。

树是学习二叉树的基础,也是后面理解B树。B+树的等树的基础,以下就给出树的几个简单操作,方便理解。

数据结构

//-------数据结构----------------------------------------
#define m 3  //定义度为3的树
typedef char datatype;
typedef struct node
{
    datatype data;
    struct node* child[m];
}treenode;
//------------------------------------------------------

基本操作

//--------操作------------------------------------------
void preorder(treenode* t)
{
    int i;
    if (t)
    {
        printf("%c",t->data);
        for(i=0;i<m;i++)
        {
            preorder(t->child[i]);
        }
    }
}

void postorer(treenode* t)
{
    int i;
    if (t)
    {
        for(i =0;i<m;i++)
        {
            postorer(t->child[i]);
        }
        printf("%c",t->data);
    }
}
//必须用指针的指针,假设实參是一个指针,则形參仅仅是一个实參指针的拷贝,所以实參指针的值是不会改变的。
void createtree(treenode** p)
{
    //输入的时候直接输AB###C###D###回车
    int i;char ch;
    scanf("%c",&ch);
    if (ch ==‘#‘)
    {
        *p = NULL;
    }
    else
    {
        *p = (treenode*)malloc(sizeof(node));
        (*p)->data = ch;
        for (i =0;i<m;i++)
        {
            createtree(&((*p)->child[i]));
        }
    }
}
//------------------------------------------------------

对于树的操作不须要做太多,大多数都是针对二叉树的操作,所以就给出了简单的几个操作,足矣。

时间: 2024-10-05 12:30:24

数据结构——树的简单操作集合的相关文章

树的简单操作集合——基于C实现

很多数据结构的书上讲解数据机构时都是采用伪代码实现,其实感觉蛮不直观的,所以对于所有的数据结构操作我都将其用C实现一遍. 树是学习二叉树的基础,也是后面理解B树,B+树的等树的基础,下面就给出树的几个简单操作,方便理解. 数据结构 //-------数据结构---------------------------------------- #define m 3 //定义度为3的树 typedef char datatype; typedef struct node { datatype data

javascript实现数据结构: 树和二叉树的应用--最优二叉树(赫夫曼树),回溯法与树的遍历--求集合幂集及八皇后问题

赫夫曼树及其应用 赫夫曼(Huffman)树又称最优树,是一类带权路径长度最短的树,有着广泛的应用. 最优二叉树(Huffman树) 1 基本概念 ① 结点路径:从树中一个结点到另一个结点的之间的分支构成这两个结点之间的路径. ② 路径长度:结点路径上的分支数目称为路径长度. ③ 树的路径长度:从树根到每一个结点的路径长度之和. 以下图为例: A到F :结点路径 AEF : 路径长度(即边的数目) 2 : 树的路径长度:3*1+5*2+2*3=19: ④ 结点的带权路径长度:从该结点的到树的根结

数据结构 树(下)

数据结构 树(下) 一.概述 AVL树.伸展树.红黑树搜索树算法保证最坏情况或者一系列操作情况下,搜索.插入和删除的操作的时间复杂度是O(logn).本文主要内容包含:平衡搜索树中的AVL树.伸展树.(2,4)树.红黑树 和(a,b)树.B树等实际运用的树数据结构. 二叉搜索树的删除 二.AVL树 1.基本知识 1.AVL树是维持对数O(logn)的高度的特殊二叉搜索树.“高度”指根节点到叶子节点最长路径上的节点的数量.“None”的孩子的高度是0,叶子节点的高度是1,父节点是叶子节点的高度加1

Python简单操作笔记

Python 类型转换 str(),repr()|format() : 将非字符类型转成子串 int() : 转为整形 float() : 转为浮点型 list(s) : 将字串s转成列表 tuple(s) : 将字串s转成元组 set(s) : 将字串s转成集合 frozenset(s) : 将字串s转成不可变集合 dict(s) : 创建字典 其d必须是(key,value)的元组序列; chr(x) : 将整形转成字符 ord(x) : 将字符转成整形 hex(x) : 将整形转换成16进

进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来

数据结构--用Objective-C简单实现的数据结构:栈

前言:最近在学习数据结构,这里用Objective-C简单实现了一下栈.用Objective-C确实好容易,因为我使用了Cocoa框架提供了NSMutableArray作为存储元素的集合,操作集合元素很方便. 只不过,下面这种实现方法可能不是最优化的,因为NSMutableArray不是最轻量级的集合容器.我现在还不知道如何写出最优化的栈实现,同时还需要满足这一个需求:存储的元素是OC对象 . 使用NSMutableArray作为存储元素的集合的优点:类似C语言实现栈的链式存储结构,就不会和C语

MongoDB数据库简单操作

之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON 对象.字段值可以包含其他文档,数组及文档

数据结构——树状数组

我们今天来讲一个应用比较广泛的数据结构——树状数组 它可以在O(nlogn)的复杂度下进行单点修改区间查询,下面我会分成三个模块对树状数组进行详细的解说,分别是树状数组基本操作.树状数组区间修改单点查询的实现.树状数组查询最值的实现 一. 树状数组一般分为三种操作,初始化.修改.查询 在讲基本操作之前,我们先来看一张图 这张图就是树状数组的存储方式,对于没有接触过树状数组的人来说看懂上面这张图可能有些困难,上图的A数组就是我们的原数组,C数组则是我们需要维护的数组,这样存储能干什么呢,比如我们在

数据结构 树(上)

数据结构 树(上) 一.概述 主要内容包含树的基本概念.二叉树(平衡二叉树.完全二叉树.满二叉树).搜索树(二叉搜索树.平衡搜索树.AVL树.伸展树.(2,4)树.红黑树).(a,b)树.B树等实际运用的树数据结构 二.基本知识(树的定义和属性) 1.树(非线性数据结构)运用于一些算法实现的效率会比线性数据结构(基于数组的列表和链表)快,广泛运用于文件系统目录结构.图形用户界面.MySQL数据库索引.网站.路由协议和其他计算机系统中 2.树T定义为存储一系列元素的有限节点集合,这些节点具有 pa