搜索
首页 电脑/网络 程序设计 其他编程语言

二叉树 数据结构

建立一棵用二叉链表方式存储的二叉树,并对其进行遍历(先序,中序,后序),打印输出结果。要求:从键盘接受输入先序序列,一二叉链表作为存储结构,建立二叉树,并对其进行遍历(先序,中序,后序)并判断是否为满二叉树。打印遍历结果。要求用递归方法实现

全部回答

2018-05-15

88 0
    #include#include//提供pow()函数using namespace std;#define OK 1#define ERROR 0typedef int Status;typedef struct BiTNode{ int data; struct BiTNode *lChild,*rChild;}BiTNode,*BiTree;//先序输出二叉树void PreOrderTraverse(BiTree T){ if(T) { coutdatalChild); PreOrderTraverse(T->rChild); }}//中序输出二叉树void InOrderTraverse(BiTree T){ if(T) { InOrderTraverse(T->lChild); coutdatarChild); }}//后序输出二叉树void PostOrderTraverse(BiTree T){ if(T) { PostOrderTraverse(T->lChild); PostOrderTraverse(T->rChild); coutdata>num; if(num==0) T=NULL; else { T=(BiTree)malloc(sizeof(BiTNode)); T->data=num; CreateBiTree(T->lChild); CreateBiTree(T->rChild); } return OK;}//计算二叉树的深度int BiTreeDepth(BiTree T){ int depth1,depth2; if(!T) return 0; else{ depth1=BiTreeDepth(T->lChild); depth2=BiTreeDepth(T->rChild); if(depth1>depth2) return depth1 1; else return depth2 1; }}static int n=0;int CountNode(BiTree T){ if(T) { n ; CountNode(T->lChild); CountNode(T->rChild); } return n;}//计算深度为depth的满二叉树的结点数inline int Count(int depth){ return pow(2,depth)-1;//满二叉树的结点计算法}int main(){ int depth,num; BiTree T; cout cout cout if(CreateBiTree(T)) { cout PreOrderTraverse(T); cout cout InOrderTraverse(T); cout cout PostOrderTraverse(T); cout depth=BiTreeDepth(T); num=CountNode(T); if(num==Count(depth))// cout else cout } return 0;}我已经调试过了,可以通过。
    你调试的时候,记得输入二叉树要先序输入,以0为空格字符。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
其他编程语言
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
其他编程语言
VB
数据库
C/C++
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
其他编程语言
举报
举报原因(必选):
取消确定举报