数据结构【树篇】(一)

本文介绍了数据结构中的二叉树,包括二叉树的存储结构(顺序和链式)、前中后遍历方法以及线索二叉树的实现。同时推荐了码蹄集作为学习资源,讲述了学习算法的原因和目标。
摘要由CSDN通过智能技术生成

数据结构【树篇】(一)



前言

在这里插入图片描述

为什么突然想学算法了?

> 用较为“官方”的语言讲,是因为算法对计算机科学的所有分支都非常重要。 在绝大多数的计算机科学分支领域中,要想完成任何实质性的工作,理解算法的基础知识并掌握与算法密切相关的数据结构知识是必不可少的。
> 但从实际而言,是因为当下竞争压力逐渐增大,无论走哪一条路,都不免需要一些相对丰富的算法知识,是故,便产生了一个寒假巩固速成算法的计划,可能对于像我这种算法竞赛小白而言,几乎很难,但我仍然还是想尝试一下,毕竟,梦想还是要有的,万一实现了呢?~( ̄▽ ̄~)~

在这里插入图片描述


为什么选择码蹄集作为刷题软件?

码蹄集,是在全国高等学校计算机教学与产业实践资源建设专家委员会(TIPCC) 指导下建设的,其依托全国各大名校计算机系和清华大学出版社等单位的强大资源,旨在为计算机学习爱好者提供全面和权威的计算机习题。
.
在这里插入图片描述


目录

一、二叉树

(一)、二叉树的存储结构

.
参考代码

#define MaxSize 100
//二叉树的顺序存储
struct TreeNode{
   
    int value;          //结点中的数据元素
    bool isEmpty;       //结点是否为空
};

//定义一个长度为MaxSize的数组t,按照从上至下、从左至右的顺序依次存储完全二叉树中的各个结点
TreeNode t[MaxSize];
//初始化时所有结点标记为空
for(int i=0;i<MaxSize;i++){
   
    t[i].isEmpty=true;
}

//二叉树的链式存储
typedef ElemType{
   
    int value;
};

typedef struct BiTNode{
   
    ElemType data;                  //数据域
    struct BiTNode *lchild,*rchild; //左、右孩子指针
    struct BiTNode *parent          //父节点指针
}BiTNode,*BiTree;

void init(){
   
    //定义一颗空树
    BiTree root = NULL;

    //插入根节点
    root = (BiTree)malloc(sizeof(BiTNode));
    root->data = {
   1};
    root->lchild = NULL;
    root->rchild = NULL;
    
    //插入新结点
    BiTNode *p = (BiTNode *) malloc(sizeof (BiTNode));
    p->data = {
   2};
    p->rchild = NULL;
    p->lchild = NULL;
    root->lchild = p;       //作为根节点的左孩子
    
}


(二)、二叉树的前中后遍历


//先序遍历
void PreOrder(BiTree T){
   
    if(T!=NULL){
   
        visit(T);            //访问根结点
        PreOrder(T->lchild); //递归遍历左子树
        PreOrder(T->rchild); //递归遍历右子树
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ぃ灵彧が

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值