二叉树二叉链表存储结构《头文件:#include "BiTreeHead.h"》

本文介绍了一种二叉树的二叉链表存储方式,并提及了相关头文件'BiTreeHead.h'及其在函数实现文件'BiTreeFun.cpp'中的应用。
摘要由CSDN通过智能技术生成

二叉树二叉链表存储结构《头文件:#include "BiTreeHead.h"》


二叉树二叉链表存储结构 <函数实现:BiTreeFun.cpp>

//--------	头文件BiTreeHead.h
//--------	二叉树二叉链表存储结构 
//--------	头文件:#include "BiTreeHead.h"
//--------	函数实现:BiTreeFun.cpp
//--------  调用非系统头文件:
//--------------------------- #include "datatype.h"	//定义数据类型
//--------------------------- #include "headfile.h"	//各类头文件调用
#ifndef _BITREEHEAD_H_
#define _BITREEHEAD_H_

#include "headfile.h"	//各类头文件调用
#include "datatype.h"	//定义数据类型

typedef struct BiTNode
{


	ElemType data;		//结点数据
	BiTNode * lchild;	//左子树
	BiTNode * rchild;	//右子树

}BiTN
请输入实验正确的代码#include"stdio.h" #include"iostream.h" #include"stdlib.h" #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; //BiTree是二叉链表的数据结构,其类型是结构体指针 ///////////////////////////////////////////////////////////////////// //这个函数的功能是以先序方式建立二叉链表, void CreateBiTree(BiTree &T) { char ch; cin>>ch; if (ch=='#')T=NULL; else { T=new BiTNode; T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } }//CreateBiTree /////////////////////////////////////////////////////////////////// //实验1:先序遍历二叉树的递归算法PreOrderTraverse //////////////////////////////////////////////////////////// ////实验2:中序遍历二叉树的递归算法InOrderTraverse //////////////////////////////////////////////////////////// //实验3:后序遍历二叉树的递归算法PostOrderTraverse ///////////////////////////////////// //实验4:统计二叉树中结点的个数NodeCount ///////////////////////////////////// //实验5:统计二叉树中叶子结点的个数LeafCount ////////////////////////////////////////// int main() { BiTree root; int i; printf("准备以先序方式创建二叉树...,\n请输入各节点数据(如果没有左、右孩子,输入空格):\n"); CreateBiTree(root); printf("\n先序遍历的结果: "); PreOrderTraverse(root); printf("\n中序遍历的结果: "); InOrderTraverse(root); printf("\n后续遍历的结果: "); PostOrderTraverse(root); printf("\n"); printf("\n该树共有%d个结点。\n",NodeCout(root)); printf("\n该树共有%d个叶子。\n",LeafCout(root)); return 0; }
最新发布
06-01
以下是修正后的代码: #include <stdio.h> #include <stdlib.h> typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; void CreateBiTree(BiTree &T) { char ch; scanf("%c", &ch); if (ch == '#') { T = NULL; } else { T = (BiTree) malloc(sizeof(BiTNode)); T->data = ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } void PreOrderTraverse(BiTree T) { if (T == NULL) { return; } printf("%c ", T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } void InOrderTraverse(BiTree T) { if (T == NULL) { return; } InOrderTraverse(T->lchild); printf("%c ", T->data); InOrderTraverse(T->rchild); } void PostOrderTraverse(BiTree T) { if (T == NULL) { return; } PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c ", T->data); } int NodeCount(BiTree T) { if (T == NULL) { return 0; } return NodeCount(T->lchild) + NodeCount(T->rchild) + 1; } int LeafCount(BiTree T) { if (T == NULL) { return 0; } if (T->lchild == NULL && T->rchild == NULL) { return 1; } return LeafCount(T->lchild) + LeafCount(T->rchild); } int main() { BiTree root; printf("准备以先序方式创建二叉树...\n"); printf("请输入各节点数据(如果没有左、右孩子,输入#):\n"); CreateBiTree(root); printf("\n先序遍历的结果: "); PreOrderTraverse(root); printf("\n中序遍历的结果: "); InOrderTraverse(root); printf("\n后序遍历的结果: "); PostOrderTraverse(root); printf("\n该树共有%d个结点。\n", NodeCount(root)); printf("该树共有%d个叶子。\n", LeafCount(root)); return 0; } 修正的主要内容包括: 1. 修改了头文件的引用方式,将iostream.h改为stdio.h。 2. 对函数名进行了修正,将NodeCout改为NodeCount,将LeafCout改为LeafCount。 3. 修改了输入数据的方式,使用scanf代替cin。 4. 修改了输出格式,使其更加清晰易读。 5. 对一些细节进行了修正,比如在CreateBiTree函数中对T进行了动态内存分配,避免了空指针的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值