二叉树是一种特殊的树型结构,一般都以二叉树作为树型结构学习的案例讲解。
二叉树的主要操作有遍历,例如有先序遍历、中序遍历、后序遍历。在遍历之前,就是创建一棵二叉树,当然,还需要有删除二叉树的算法。
以二叉树的创建、删除、先序遍历为例,实现代码如下
#include
#include
typedef char ElemType;
typedef struct node
{ ElemType data;
struct node *lchild, *rchild;
} BTNode;
BTNode * createTree(BTNode *tree){
ElemType e;
fflush(stdin);
scanf("%c", &e);
if(e != '#'){
tree = (BTNode *)malloc(sizeof(BTNode));
tree->data = e; tree->lchild = NULL; tree->rchild = NULL;
tree->lchild = createTree(tree->lchild);
tree->rchild = createTree(tree->rchild);
}
return tree;
}
void DestroyBTree(BTNode *b)
{ if (b==NULL) return ;
else
{ DestroyBTree(b->lchild);
DestroyBTree(b->rchild);
free(b);
}
}
void PreOrder(BTNode *b)
{ if (b!=NULL)
{ printf("%c ",b->data);
PreOrder(b->lchild);
PreOrder(b->rchild);
}
}
int main(){
BTNode *tree = createTree(tree);
PreOrder(tree);
DestroyBTree(tree);
return 0;
}
测试用例如下
A
B
D
#
G
#
#
#
C
E
#
#
F
#
#
A B D G C E F
以上测试用的测试案例,就是上述二叉树图形的结构,二叉树构成过程中,以先序的方式创建,子树为空的时候,输入为#
上述算法中,还可以做更多的优化,每一个优化都是一次进步。
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
二叉树
+关注
关注
0文章
74浏览量
12322
发布评论请先 登录
相关推荐
基于二叉树的时序电路测试序列设计
为了实现时序电路状态验证和故障检测,需要事先设计一个输入测试序列。基于二叉树节点和树枝的特性,建立时序电路状态二叉树,按照电路二叉树节点(状态)与树枝(输入)的层次逻辑
发表于 07-12 13:57
•0次下载
二叉树层次遍历算法的验证
实现二叉树的层次遍历算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。
发表于 11-28 01:05
•2093次阅读
红黑树(Red Black Tree)是一种自平衡的二叉搜索树
平衡(Balance):就是当结点数量固定时,左右子树的高度越接近,这棵二叉树越平衡(高度越低)。而最理想的平衡就是完全二叉树/满二叉树,高度最小的二叉树。
二叉树操作的相关知识和代码详解
树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。在面试环节中,二叉树也是必考的模块。本文主要讲二叉树操作的相关知识,梳理面试常考的内容。请大家跟随小编一起来复习吧。 本篇针对面
二叉树的前序遍历非递归实现
我们之前说了二叉树基础及二叉的几种遍历方式及练习题,今天我们来看一下二叉树的前序遍历非递归实现。 前序遍历的顺序是, 对于树中的某节点,先遍
C语言数据结构:什么是二叉树?
完全二叉树:完全二叉树是效率很高的数据结构。对于深度为K,有n个节点的二叉树,当且仅当每一个节点都与深度为K的满二叉树中编号从1至n的节点一一对应时,称为完全
怎么就能构造成二叉树呢?
一直跟着公众号学算法的录友 应该知道,我在二叉树:构造二叉树登场!,已经讲过,只有 中序与后序 和 中序和前序 可以确定一颗唯一的二叉树。前序和后序是不能确定唯一的二叉树的。
评论