求c语言数据结构二叉树的建树,前序遍历,输出树的代码,能用采纳。
#include
#define
MAXSIZE
100
//二叉树中最多的结点数
typedef
char
TElemType;
typedef
struct
BiTNode
{
TElemType
data;
struct
BiTNode
*lchild,*rchild;
}BiTNode,*BiTree;
//定义函数指针
typedef
void(*
Visit)(BiTree);
//二叉树的初始化
void
Init_BiTree(BiTree
*T)
{
*T
=
NULL;
}
//判断二叉树是否为空,返回1
int
IsEmpty_BiTree(BiTree
*T)
{
return
*T
==
NULL;
}
//创建二叉树
void
Create_BiTree(BiTree
*T)
{
char
ch;
ch
=
getchar();
//当输入的是"#"时,认为该子树为空
if(ch
==
'#')
*T
=
NULL;
//创建树结点
else{
*T
=
(BiTree)malloc(sizeof(BiTNode));
(*T)->data
=
ch;
//生成树结点
//生成左子树
Create_BiTree(&(*T)->lchild);
//生成右子树
Create_BiTree(&(*T)->rchild);
}
}
//输出结点的值
void
Print_BiTreeNode(BiTree
T)
{
printf("%c\t",T->data);
}
//先序遍历二叉树
void
PreOrder_BiTree(BiTree
T,Visit
visit)
{
if(!IsEmpty_BiTree(&T))
{
visit(T);
PreOrder_BiTree(T->lchild,visit);
PreOrder_BiTree(T->rchild,visit);
}
}
int
main(){
BiTree
T;
//将二叉树初始为一个空的二叉树
Init_BiTree(&T);
//创建二叉树
Create_BiTree(&T);
//先序遍历
printf("\n先序遍历结果:");
PreOrder_BiTree(T,Print_BiTreeNode);
return
0;
}
/******************************************************/
/*
二叉树的建立深度优先遍历求叶子个数求深度
*/
/******************************************************/
#include
"stdio.h"
#include
"string.h"
#include
"stdlib.h"
#define
null
0
typedef
struct
bitnode{
int
data;
struct
bitnode
*lchild,*rchild;
}bitnode,*bitree;
/*创建一个二杈树以#号结束*/
bitree
create(bitree
t){
char
ch;
ch=getchar();
if(ch=='#')
t=null;
else{
t=(bitree)malloc(sizeof(bitnode));
t->data=ch;
t->lchild=create(t->lchild);
t->rchild=create(t->rchild);
}
return
t;
}
/*递归遍历*/
void
preorder(bitree
t){
if(t){
printf("%c",t->data);
/*先序*/
preorder(t->lchild);
/*printf("%c",t->data);
中序*/
preorder(t->rchild);
/*printf("%c",t->data);
后序*/
}
}
/*求深度*/
int
depth(bitree
t){
int
depthval,depl,depr;
if(!t)
depthval=0;
else{
depl=depth(t->lchild);
depr=depth(t->rchild);
depthval=1+(depl>depr?depl:depr);
}
return
depthval;
}
/*求叶子数*/
int
countleaf(bitree
t){
int
count=0;
if(!t)
count=0;
else
if((!t->lchild)&&(!t->rchild))
count++;
else
count=countleaf(t->lchild)+countleaf(t->rchild);
return
count;
}
/*主函数*/
main(){
bitree
t=null;
printf("\nplease
input
a
tree:");
t=create(t);
preorder(t);
printf("\ndepth:%d\nleave:%d\n",depth(t),countleaf(t));
system("pause");
}
程序以调试通过!!!!!
用数据结构(C语言版)编一程序能实现先序、中序、后序遍历二叉树并能打印...
include <stdlib.h> define STACK_MAX_SIZE 30 define QUEUE_MAX_SIZE 30 ifndef elemType typedef char elemType;endif \/***\/ \/* 以下是关于二叉树操作的11个简单算法 *\/ \/***\/ struct BTreeNode{ elemType data;
C语言编写的数据结构
cout<<"判断是否为二叉排序树"<<Sort(r)<<endl;}你把c++的输入与输出,全部改成c语言的输入与输出就行了…… 本回答被提问者采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他类似问题 2013-03-25 数据结构和C语言有什么区别? 63 2010-02-04 用C语言写的数据结构的定义 26 2017-12-23...
【数据结构】二叉树(一)
【数据结构】二叉树(一)概述与存储结构二叉树是一种特殊的树形数据结构,它由 n(n ≥ 0)个节点组成,每个节点最多拥有两个子节点,且遵循左子树和右子树的顺序(有序性)。根据节点状态,二叉树可分为五类:空树、单支树、双支树、仅根节点和双子树。其中,满二叉树和完全二叉树是特殊的...
数据结构二叉树的基本操作~~~
int PreOrderTraverse(BiTree T){ \/\/先序遍历二叉树的递归算法 if(T){ printf("%c",T->data); \/\/访问根结点 PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}\/\/if return OK;} int InOrderTraverse(BiTree T){ \/\/中序 if(T){ InOrderTraverse(T->lchild);printf...
二叉树先序遍历算法流程图怎么画,学的是数据结构c语言。
在计算机软件专业中,数据结构、以及 C 语言这两门课程是非常重要的两门课程。最为重要的是:如果将来想做计算机软件开发工作的话,那么对 C 语言中的指针编程、以及递归的概念是必须要熟练精通掌握的,因为它和数据结构课程中的链表、二叉树等内容的关系实在是太紧密了。但是这个编程技能必须要依靠自己多...
数据结构--二叉树
通过递归深入到子节点层级,直到找到需要删除的节点。总结来说,二叉树和递归是相辅相成的数据结构和算法概念。二叉树提供了数据组织的层次结构,而递归提供了解决问题的通用方法。理解这两个概念对于设计高效、可维护的算法和数据结构至关重要。今天的专栏就分享到这里,期待与您明天再见!
c语言数据结构。假定对有序表(1,9,15,21,24,35,52,54,61,65,97)进行...
这个树是一棵二叉排序树,然后满足两个条件:如果查找表中的某元素需要进行n次比较,那么这个元素在二叉树的第n层;找到某元素的过程,就是走了一条从根结点到该元素所在结点的路径,所以只需要一步一步地算mid,来算出一个结点的左右子结点即可(当然可能只有一个子结点)。举个例子:首先令low=1...
如何在数据结构中,以二叉链表为存储结构,建立一棵二叉树,输出其先序...
下面我写的代码:\/* Note:Your choice is C IDE *\/ include <stdio.h> include <stdlib.h> include <malloc.h> struct lbtree { char data;struct lbtree *lchild,*rchild;};struct lbtree *createbtree();void preorder(struct lbtree *root);void inorder(struct lbtree *root);void ...
(C语言,数据结构)查找一个数是否在数列中
这个题目一般会采用排序二叉树来解。struct Node { int data;Node *lchild, *rchild;Node(int _data = 0, Node *_lchild = NULL, Node *_rchild = NULL):data(_data), lchild(_lchild), rchild(_rchild) { } };bool SearchInsert(Node* &root, int x) { if(root == NULL) { r...
数据结构,二叉树,求详细过程
按照某种遍历方式对二叉树进行遍历,可以把二叉树中所有结点排序为一个线性序列.在该序列中,除第一个结点外每个结点有且仅有一个直接前驱结点;除最后一个结点外每一个结点有且仅有一个直接后继结点.这些指向直接前驱结点和指向直接后续结点的指针被称为线索,加了线索的二叉树称为线索二叉树.按某种次序...
答娟多维: #include#include#define MAXSIZE 100 //二叉树中最多的结点数 typedef char TElemType; typedef struct BiTNode { TElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;//定义函数指针 typedef void(* Visit)(BiTree);//二叉树的初始化 ...
内江市17592706541: C语言根据层次遍历和中序遍历求二叉树的前序遍历和后序遍历.下面有我的建树函数,有注释的. - ?
答娟多维: #include"cstdio"#include"vector"#include"cstring"#include"algorithm" using namespace std; const int maxn =30; struct node{ int data; node* lchild; node* rchild; }; int n; int in[maxn]; bool vis[maxn]={false}; vector lev; node* create(vector ...
内江市17592706541: 求数据结构(C语言版)建立二叉树的代码~~急~~谢谢了 - ?
答娟多维: BT.H文件 #include <stdio.h> #include <malloc.h> #include <conio.h> #define TRUE 1 #define FALSE 0 #define ERROR 0 #define OK 1 #define Stack_Size 50 #define NUM 50 #define MAXSIZE 50 //队列的最大长度 //定义二叉树 typedef char ...
内江市17592706541: 用C语建立一棵二叉树并进行前序遍历. - ?
答娟多维: //以二叉链表作为存储结构,初始化和遍历都要用非递归算法. #include<iostream> using namespace std; typedef int T;//template<class T> class list { public: list * create_list(); void bef_list(list *root); private: T data; list *lchild, *rchild; }; list * list::...
内江市17592706541: 先序建立二叉树代码 c - ?
答娟多维: void PreOrderCreate(BinTree *BT) { BinTree_Type Data; scanf("%d", &Data); if (Data) { BT = (BinTree *) malloc(sizeof(BinTree)); BT->Data = Data; PreOrderCreate(BT->Left); PreOrderCreate(BT->Right); } else { BT = NULL; } } 变.并线向量(平行向量)——方向相同或相
内江市17592706541: 急求 C语言写的“二叉树的建立和后序遍历的演示” - ?
答娟多维: 楼上 你那是C么? #include <stdlib.h> struct tree /* 树的结构宣告 */ { int data; /* 节点数据 */ struct tree *left; /* 指向左子树的指标 */ struct tree *right; /* 指向右子树的指标 */ }; typedef struct tree treenode; /* 树的结构新型态 */ typedef treenode ...
内江市17592706541: 输入二叉树中序和后序,求它的前序(c语言) - ?
答娟多维: 不好意思 没仔细看 刚刚运行了 成功只是如果二叉树中有相同元素就无法实现了
内江市17592706541: c语言编程:建立二叉树,层序/先序遍历?? - ?
答娟多维: #include<stdio.h>#include<stdlib.h> typedef struct BiT{ char data; struct BiT *lchild; struct BiT *rchild; }BiT; BiT* CreateBiTree(BiT *T) { //构造二叉链表表示的二叉树T char ch; scanf("%c",&ch); if (ch=='#') T = NULL; else { T = (BiT *)malloc(sizeof(...
内江市17592706541: 设计一个c语言程序,实现二叉树的前序、中序、后序的递归、非递归遍历运算 - ?
答娟多维: #include<malloc.h> // malloc()等 #include<stdio.h> // 标准输入输出头文件,包括EOF(=^Z或F6),NULL等 #include<stdlib.h> // atoi(),exit() #include<math.h> // 数学函数头文件,包括floor(),ceil(),abs()等#define ClearBiTree DestroyBiTree // 清空二...
内江市17592706541: c语言 先序建立二叉树 先序遍历二叉树 - ?
答娟多维: preOrder(BinTree T);函数里面 把if(T) ; 这个分号去了;我靠 ,看了半天;