输出二叉树树形的数据结构程序代码怎么写
发布网友
发布时间:2022-04-25 12:42
我来回答
共2个回答
热心网友
时间:2023-05-02 08:59
下面这个算法能帮你:
/*二叉树的建立与遍历
以二叉链表作为存储结构,定义二叉树类型 bitree;
实现二叉树的以下运算
建立 create( ) 输入二叉树的结点元素,建立二叉链表。
选择一种遍历方式(先序、中序、后序)遍历这棵二叉树。 */
#include <stdio.h>
struct node
{
char data;
struct node *lchild,*rchild;
};
/****************************二叉树的创建*****************************/
struct node *creat_bintree(struct node *t)
{
char ch;
printf("\n 按照先序序列输入二叉树的每个值,空格代表空树:");
ch=getchar();
getchar();
if( ch==' ')
t=NULL;
else
{
t = (struct node *)malloc(sizeof(struct node));
t->data=ch;
t->lchild = creat_bintree( t->lchild );
t->rchild = creat_bintree( t->rchild );
}
return(t);
}
/****************************二叉树的先序遍历*****************************/
void preorder(struct node *t )
{
if (t)
{
putchar(t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
/****************************二叉树的中序遍历*****************************/
void inorder(struct node *t )
{
if (t)
{
inorder(t->lchild);
putchar(t->data);
inorder(t->rchild);
}
}
/****************************二叉树的后序遍历*****************************/
void postorder(struct node *t )
{
if (t)
{
postorder(t->lchild);
postorder(t->rchild);
putchar(t->data);
}
}
void main()
{
struct node *t;
t=creat_bintree(t);
if (t)
{
printf("\n after preorder:\n");
preorder(t);
printf("\n after inorder:\n");
inorder(t);
printf("\n after postorder:\n");
postorder(t);
}
}
热心网友
时间:2023-05-02 08:59
Status Print(BiTree* &T, int layer)
{
if (!T)
{
return OK;
}
else
{
Print(T->Rightchild, layer + 1);
for (int i = 0; i < layer; ++i)
{
PrintChar(' ');
}
PrintData(T);
PrintChar('\n');
Print(T->Leftchild, layer + 1);
}
}
layer代表的是递归调用的层次,这个是比较简单算法,空间复杂度为O(depth),depth是二叉树的深度,时间复杂度为O(n),n是二叉树结点的个数。
数据结构算法设计——统计二叉树叶子结点的个数,并输出结果
代码如下:include<stdio.h> include<stdlib.h> typedef struct BiTNode { char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void CreatTree(BiTree &A){ char ch;scanf("%c",&ch);if(ch=='#'){ A=NULL;} else { A=new BiTNode;A->data=ch;CreatTree(A->lchild);CreatTre...
关于数据结构C语言二叉树的程序,请人帮忙看看~谢谢
if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))exit(OVERFLOW);/**T.data=ch;*/T->data=ch; //楼主要仔细研究一下指向运算符"->"和结构体成员运算符"."的区别,此程序中N多错误都是因为没有区分它们引起的 CreateBiTree(T->lchild);CreateBiTree(T->rchild);} } status DLR(BiTree roo...
数据结构中用c语言建立二叉树的程序
include "stdio.h"include "stdlib.h"include "malloc.h"typedef struct Bnode //二叉树节点类型 { int m;struct Bnode *Lchild,*Rchild;}Btnode, *BTptr;typedef struct Dnode //队列节点类型 { Btnode *pr;struct Dnode *next;}Qnode,*Qlink;typedef struct //q节点类型 { Qnod...
数据结构中关于用c++语言建立二叉树的问题,求代码,急!!!
postOrder(root->RChild);/*后序遍历右子树*/ printf("%c",root->data);/*输出结点*/ } } void main(){ BiTree T;printf("建立二叉树,请输入序列:\n");CreateBiTree(&T);printf("\n输出前序序列为:");preOrder(T);printf("\n输出中序序列为:");inOrder(T);printf("\n输出后...
数据结构二叉树的基本操作~~~
include <string.h> include <stdlib.h> define OK 1 define NULL 0 define FALSE 0 typedef struct BiTNode{ //定义链式二叉树结构体 char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;BiTree T;char ch;int flag=0;int createBiTree(BiTree &T){ //按先序输入二叉树中结点的值...
从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序...
define MaxSize 10 define Number 30 struct BiTNode{//定义数据结构 char data;BiTNode *lchild,*rchild;};void InitBtree(BiTNode * &BT){//初始化二叉树 BT=NULL;} void CreateBiTree(BiTNode *&BT,char *str){//建立二叉树 BiTNode *s[MaxSize];int top=-1;BT=NULL;BiTNode *p=NULL;i...
求数据结构高手编个程序搞定实验。二叉树创建、先序遍历读出、中序遍历...
//Status是函数的类型,其值是函数结果状态代码 typedef int Status;/* 定义二叉树结点类型 */ typedef char ElemType;/* 定义二叉树的数据结构 */ typedef struct BTreeNode { ElemType data; // 存储结点值 struct BTreeNode* lchild; // 左孩子指针 struct BTreeNode* rchild; // ...
c语言 关于二叉树的创建和遍历(中序遍历)
struct BiTNode{//定义数据结构 char data;BiTNode *lchild,*rchild;};void InitBtree(BiTNode * &BT){//初始化二叉树 BT=NULL;} void CreateBiTree(BiTNode *&BT,char *str){//建立二叉树 BiTNode *s[MaxSize];//这里定义了一个数组用作堆栈方便检查输入和操作 int top=-1;BT=NULL;BiTNode...
求数据结构二叉树查找结点及其父节点的代码,谢谢!!!
build_tree(1,x);//构建二叉树(结构体数组模拟)cin>>m;//查询次数 for(int i=0;i<m;i++){ int num,y;cin>>num;//查询值 y=mp[num];//mp[num]是num在tree数组中的位置,查询效率O(log2n)y/=2;//左右孩子的下标除以2,就是父节点的下标 if(y==0){//父节点下标为0,既是...
C语言版数据结构程序设计求大神帮助
/* 二叉树应用 */ #include "stdio.h" #include "stdlib.h" typedef char ElemType; /* 结点数据的类型 */ typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode; /* 树结点类型 */ /*栈的定义及基本操作*/ #define MaxSize 100 typedef BiTNode* SElemType; ...