数据结构【树篇】(一)
文章目录
前言

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

为什么选择码蹄集作为刷题软件?
码蹄集,是在全国高等学校计算机教学与产业实践资源建设专家委员会(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); //递归遍历右子树
}
本文介绍了数据结构中的二叉树,包括二叉树的存储结构(顺序和链式)、前中后遍历方法以及线索二叉树的实现。同时推荐了码蹄集作为学习资源,讲述了学习算法的原因和目标。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



