求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语言中什么是“二叉树”?
在计算机科学领域,二叉树是一种特殊的树结构,它的每个节点最多有两个子节点。通常,这两个子节点被称为“左子节点”和“右子节点”。二叉树在数据结构和算法中扮演着重要的角色,尤其是在二叉搜索树和二叉堆等数据结构中。二叉树的特点是每个节点最多有两个子节点,且这两个子节点分别被称为左子...
数据结构(C语言版)---二叉树
数据结构:二叉树详解二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,且子节点的位置固定。它分为几种类型:一般二叉树:常规二叉树结构,没有特定的满度要求。满二叉树:在不增层数前提下,无法添加更多节点的特殊二叉树。完全二叉树:删除了满二叉树底层右端节点后的结构,底层剩余节点...
数据结构---二叉树(C语言看了就懂教程)
数据结构中的二叉树是一种特殊的树形结构,每个节点最多只有两个子节点,其特性与形态各异。关键概念包括:二叉树的性质表明,第n层最多有2^(n-1)个节点(n>=1),深度为k的树至多有2^k - 1个节点(k>=1)。终端节点和度为2的节点数量之间存在关系:N0 = N2 + 1。二叉树的形态分为三种...
数据结构之二叉树的前序遍历、中序遍历、后序遍历(C语言实现非递归)
1、非递归前序遍历 口诀:根左右。前序遍历首先访问根结点,然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。1.1 具体流程 1.2 具体代码 2、非递归中序遍历 中序遍历是“左根右",即先遍历左子树节点,再遍历根节点,再遍历右子树节点 2...
五分钟C语言数据结构 之 二叉树中序遍历
中序遍历的步骤是:首先递归遍历左子树,然后访问根节点,最后遍历右子树。在访问每个节点时,可以进行相关操作,如显示节点值。下面通过一个实例来直观说明:假设我们有一个二叉树,其中序遍历过程会生成特定的节点序列。C语言中,二叉树的中序遍历可以使用递归方法实现,首先初始化树形结构,然后运行代码,...
C语言 什么叫完全二叉树?
完全二叉树是一种特殊的二叉树。定义:如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。例:特点:叶子结点只可能在最大的两层上出现,对任意结点,若其右分支下的子孙最大层次为L,则其左分支下的子孙的最大...
C语言数据结构二叉树的遍历
层次遍历应该没有递归算法递归实际就是一种深度优先的算法而层次遍历实际是广度优先的遍历算法,所以递归不适用比如假设有递归算法,现遍历i层的开始,对i层第一个元素遍历后需调用递归函数遍历其孩子,递归调用完成后才继续遍历i层第二个元素,这样就不是层次遍历了。
数据结构二叉树的程序,用c语言怎么实现?
您好,想要实现一个二叉树,需要用到结构体来存储每个节点的信息,并使用指针来存储每个节点的左右子节点的地址。具体的实现方法可以参考下面的代码示例:include <stdio.h> include <stdlib.h> struct TreeNode { int val;struct TreeNode *left;struct TreeNode *right;};struct TreeNode* createNode...
计算机c语言中 什么是二叉树
树是由一个或多个结点组成的有限集合,其中:⒈必有一个特定的称为根(ROOT)的结点;二叉树 ⒉剩下的结点被分成n>=0个互不相交的集合T1、T2、...Tn,而且, 这些集合的每一个又都是树。树T1、T2、...Tn被称作根的子树(Subtree)。树的递归定义如下:(1)至少有一个结点(称为根)(2)其...
数据结构中二叉树的顺序存储结构代码怎么编写?
数据结构C语言版 二叉树的顺序存储表示和实现 P126 编译环境:Dev-C++ 4.9.9.2 日期:2011年2月13日 *\/#include <stdio.h>typedef char TElemType;\/\/ 二叉树的顺序存储表示 #define MAX_TREE_SIZE 100 \/\/ 二叉树的最大结点数 typedef TElemType SqBiTree[MAX_TREE_SIZE]; \/\/ 0号单元存储根结点 typedef ...
徵初甘草: #include#include#define MAXSIZE 100 //二叉树中最多的结点数 typedef char TElemType; typedef struct BiTNode { TElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;//定义函数指针 typedef void(* Visit)(BiTree);//二叉树的初始化 ...
冕宁县15583991674: 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 ...
冕宁县15583991674: 用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::...
冕宁县15583991674: 求数据结构(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 ...
冕宁县15583991674: 输入二叉树中序和后序,求它的前序(c语言) - ?
徵初甘草: 不好意思 没仔细看 刚刚运行了 成功只是如果二叉树中有相同元素就无法实现了
冕宁县15583991674: 急求 C语言写的“二叉树的建立和后序遍历的演示” - ?
徵初甘草: 楼上 你那是C么? #include <stdlib.h> struct tree /* 树的结构宣告 */ { int data; /* 节点数据 */ struct tree *left; /* 指向左子树的指标 */ struct tree *right; /* 指向右子树的指标 */ }; typedef struct tree treenode; /* 树的结构新型态 */ typedef treenode ...
冕宁县15583991674: 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(...
冕宁县15583991674: 设计一个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 // 清空二...
冕宁县15583991674: c语言 先序建立二叉树 先序遍历二叉树 - ?
徵初甘草: preOrder(BinTree T);函数里面 把if(T) ; 这个分号去了;我靠 ,看了半天;
冕宁县15583991674: 先序建立二叉树代码 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; } } 变.并线向量(平行向量)——方向相同或相