第十周项目2-二叉树遍历的递归算法
来源:互联网 发布:ipad网络非常慢怎么办 编辑:程序博客网 时间:2024/06/06 08:37
copyright (c) 2016,烟台大学计算机学院 All rights reserved. 文件名称:1.cpp 作者:臧新晓 完成日期:2016年9月12日 版本号:v1.0 问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用“A(B(D,E(J,K(L,M(N)))))”创建的二叉树进行测试。输入描述:无。输出描述:测试结果。代码//main.cpp:[csharp] view plain copy 在CODE上查看代码片派生到我的代码片#include <stdio.h> #include "btree.h" void PreOrder(BTNode *b) //先序遍历的递归算法 { if (b!=NULL) { printf("%c ",b->data); //访问根节点 PreOrder(b->lchild); //递归访问左子树 PreOrder(b->rchild); //递归访问右子树 } } void InOrder(BTNode *b) //中序遍历的递归算法 { if (b!=NULL) { InOrder(b->lchild); //递归访问左子树 printf("%c ",b->data); //访问根节点 InOrder(b->rchild); //递归访问右子树 } } void PostOrder(BTNode *b) //后序遍历的递归算法 { if (b!=NULL) { PostOrder(b->lchild); //递归访问左子树 PostOrder(b->rchild); //递归访问右子树 printf("%c ",b->data); //访问根节点 } } int main() { BTNode *b; CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"); printf("二叉树b:\n"); DispBTNode(b); printf("\n"); printf("先序遍历序列:\n"); PreOrder(b); printf("\n"); printf("中序遍历序列:\n"); InOrder(b); printf("\n"); printf("后序遍历序列:\n"); PostOrder(b); printf("\n"); DestroyBTNode(b); return 0; } //btree.h:[csharp] view plain copy 在CODE上查看代码片派生到我的代码片#ifndef BTREE_H_INCLUDED #define BTREE_H_INCLUDED #define MaxSize 100 typedef char ElemType; typedef struct node { ElemType data; //数据元素 struct node *lchild; //指向左孩子 struct node *rchild; //指向右孩子 } BTNode; void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链 BTNode *FindNode(BTNode *b,ElemType x); //返回data域为x的节点指针 BTNode *LchildNode(BTNode *p); //返回*p节点的左孩子节点指针 BTNode *RchildNode(BTNode *p); //返回*p节点的右孩子节点指针 int BTNodeDepth(BTNode *b); //求二叉树b的深度 void DispBTNode(BTNode *b); //以括号表示法输出二叉树 void DestroyBTNode(BTNode *&b); //销毁二叉树 #endif // BTREE_H_INCLUDED //btree.cpp:[csharp] view plain copy 在CODE上查看代码片派生到我的代码片#include <stdio.h> #include "btree.h" void PreOrder(BTNode *b) //先序遍历的递归算法 { if (b!=NULL) { printf("%c ",b->data); //访问根节点 PreOrder(b->lchild); //递归访问左子树 PreOrder(b->rchild); //递归访问右子树 } } void InOrder(BTNode *b) //中序遍历的递归算法 { if (b!=NULL) { InOrder(b->lchild); //递归访问左子树 printf("%c ",b->data); //访问根节点 InOrder(b->rchild); //递归访问右子树 } } void PostOrder(BTNode *b) //后序遍历的递归算法 { if (b!=NULL) { PostOrder(b->lchild); //递归访问左子树 PostOrder(b->rchild); //递归访问右子树 printf("%c ",b->data); //访问根节点 } } int main() { BTNode *b; CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"); printf("二叉树b:\n"); DispBTNode(b); printf("\n"); printf("先序遍历序列:\n"); PreOrder(b); printf("\n"); printf("中序遍历序列:\n"); InOrder(b); printf("\n"); printf("后序遍历序列:\n"); PostOrder(b); printf("\n"); DestroyBTNode(b); return 0; }
运行结果:
0 0
- 第十周 项目2 二叉树的遍历递归算法
- 第十周-项目2 - 二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周-项目2 - 二叉树遍历的递归算法
- 第十周 项目2-二叉树遍历的递归算法
- 第十周项目2--二叉树遍历的递归算法
- 第十周项目2【二叉树遍历的递归算法】
- 第十周 项目2 二叉树遍历的递归算法
- 第十周 项目2-二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周项目2--二叉树遍历的递归算法
- 第十周项目2 - 二叉树遍历的递归算法
- 第十周 项目2--二叉树遍历的递归算法
- 第十周项目2二叉树遍历的递归算法
- 第十周 项目2-二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周项目2- 二叉树遍历的递归算法
- RabbitMQ (二)工作队列
- 第二章 λ-矩阵与矩阵的 Jordan 标准形
- OpenCv2 学习笔记(6) Mat元素访问和效率比较
- ORACLE11g 云上Data Guard环境备库down机恢复实战过程
- nyoj 又见01背包
- 第十周项目2-二叉树遍历的递归算法
- 项目遇到的问题小记
- Threadlocal 源码分析与内存泄漏
- Redis 安装(一)
- 特征工程框架图
- like模糊查询的占位符使用
- CentOS6.5启停脚本例子
- Centos6.5+mysql5.6+cluster7.4安装配置方案
- 阿里云服务器ECS添加数据盘