递归解决汉诺塔问题和二叉树的先序中序后序遍历问题
来源:互联网 发布:mac上安装mysql 编辑:程序博客网 时间:2024/06/04 06:21
在外的日子都是孤独的,希望每天都能过得充实,每天都会有收获。
ShanSir@Dalian 2012-4-8
贴两段小程序,积累生活的点点滴滴。
ShanSir@Dalian 2012-4-8
贴两段小程序,积累生活的点点滴滴。
汉诺塔问题
#include <stdio.h>void hannuota(int n,char A,char B,char C){//如果是一个盘子//直接将X柱子上的盘子从X移动到Z//否则//先将X柱子上的n-1个盘子借助C移动到B//直接将A柱子上的盘子从A移动到C//最近将B柱子上的n-1个盘子借助A移动到Cif(1 == n){printf("将编号为%d的盘子直接从%c柱子移动到%c柱子\n",n,A,C);}else{hannuota(n-1,A,C,B);printf("将编号为%d的盘子直接从%c柱子移动到%c柱子\n",n,A,C);hannuota(n-1,B,A,C);//printf("将%c柱子上的%d个盘子借助%c移动到%c",A,n-1,C,B);//printf("将%c柱子上的盘子从%c移动到%c",A,A,C);//printf("将%c柱子上的%d个盘子借助%c移动到%c",B,n-1,A,C);}}int main(void){char ch1 = 'A';char ch2 = 'B';char ch3 = 'C';int n;printf("请输入要移动盘子的个数:");scanf("%d",&n);hannuota(n,'A','B','C');return 0;}
#include <stdio.h>#include <malloc.h>struct BTNode{char data;struct BTNode* pLchild;//p是指针 L是左 child是孩子struct BTNode* pRchild;};struct BTNode* CreateBTree(void);void PreTraverseBTree(struct BTNode* pT);void InTraverseBTree(struct BTNode* pT);void PostTraverseBTree(struct BTNode* pT);int main(void){struct BTNode* pT = CreateBTree();printf("先序遍历为:");PreTraverseBTree(pT);printf("\n");printf("中序遍历为:");InTraverseBTree(pT);printf("\n");printf("后序遍历为:");PostTraverseBTree(pT);printf("\n");return 0;}void PreTraverseBTree(struct BTNode* pT){//伪算法//先访问根节点//再先序访问左子树//先序访问右子树if(NULL != pT){printf("%c\t",pT->data);if(NULL != pT ->pLchild){PreTraverseBTree(pT->pLchild);}if(NULL != pT->pRchild){PreTraverseBTree(pT->pRchild);}}}void InTraverseBTree(struct BTNode* pT){//伪算法//先中序访问左子树//访问根节点//再中序访问右子树if(NULL != pT){if(NULL != pT ->pLchild){InTraverseBTree(pT->pLchild);}printf("%c\t",pT->data);if(NULL != pT->pRchild){InTraverseBTree(pT->pRchild);}}}void PostTraverseBTree(struct BTNode* pT){//伪算法//先后序访问左子树//再后序访问右子树//再显示根节点if(NULL != pT){if(NULL != pT ->pLchild){PostTraverseBTree(pT->pLchild);}if(NULL != pT->pRchild){PostTraverseBTree(pT->pRchild);}printf("%c\t",pT->data);}}struct BTNode* CreateBTree(){struct BTNode* pA = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pB = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pC = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pD = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pE = (struct BTNode *)malloc(sizeof(struct BTNode));pA->data = 'A';pB->data = 'B';pC->data = 'C';pD->data = 'D';pE->data = 'E';pA->pLchild = pB;pA->pRchild = pC;pB->pLchild = pB ->pRchild = NULL;pC->pLchild = pD;pC->pRchild = NULL;pD->pLchild = NULL;pD->pRchild = pE;pE->pLchild = pE->pRchild = NULL;return pA;}
- 递归解决汉诺塔问题和二叉树的先序中序后序遍历问题
- 有关二叉树的遍历问题非递归
- 二叉树的先序中序后序遍历 (递归和非递归)
- 二叉树问题---二叉树的前中后序的递归,非递归及Morris遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉搜索树的递归遍历和非递归遍历
- java 二叉树的递归遍历和非递归遍历
- 利用二叉树的遍历解决表达式问题
- 用二叉树遍历思想解决的一些问题
- 二叉树的先序中序后序遍历问题
- 二叉树的递归创建和遍历
- 二叉树的生成和递归遍历
- 二叉树的递归建立和遍历
- 二叉树的创建和递归遍历
- 二叉树的实现和递归遍历
- 二叉树的创建和递归遍历
- 二叉树的遍历问题
- python读取中文目录或文件名
- Python利用OpenCV实现人脸检测
- 转载-定律
- 框架窗口、文档和视图
- 操作系统基础知识
- 递归解决汉诺塔问题和二叉树的先序中序后序遍历问题
- android 代码中获取Resource中的字符串
- serviceBuilder学习网址
- 抽象工厂模式——学习笔记
- 设计的核心任务之一:层次的控制
- android 获取屏幕的分辨率
- 我的csdn博客正式开张
- POJ 1274 网络流最大匹配
- Nginx技术交流Q群:225942451(探讨安装、部署、模块开发、源码分析,及其他知名服务端开源软件)