第就章第21题(赶出来的作业) POWERBY KTL

原创 2006年05月30日 22:33:00

//第九章第21题,交换左右子树;
//输入参考书本p194,图9-8,输入为ABCDEFG@@@@L@@@#;中序遍历结果应该为DBEALFCG;
//交换左右子树后进行中序遍历的结果应为:GCFLAEBD;
//可以用别的二叉树进行验证;若程序出错的话可能是没有设置好maxsize的值;
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define maxsize 15  //若二叉树深度为n,则设置为2^n-1;

typedef char datatype;

typedef struct node
{
 datatype data;
 struct node *lchild,*rchild;
}bitree;

bitree *root;

bitree * CreatTree(void)
{
 char ch;
 bitree * Q[maxsize];
 int front,rear;
 bitree *root,*s;
 root=NULL;
 front=1;
 rear=0;
 printf("请输入字符构造二叉树,#结束,@表示虚结点./n");
 while((ch=getche())!='#')
 {
  s=NULL;
  if(ch!='@')
  {
   s=(bitree*)malloc(sizeof(bitree));
   s->data=ch;
   s->lchild=NULL;
   s->rchild=NULL;
  }
  rear++;
  Q[rear]=s;
  if(rear==1)
   root=s;
  else
  {
   if(s&&Q[front])
    if(rear%2==0)
     Q[front]->lchild=s;
    else
     Q[front]->rchild=s;
    if(rear%2==1)
     front++;
  }
 }
 printf("创建二叉树完成.../n");
 return root;
}

bitree* Exchange(bitree * p)  //该算法的主要思想是把递归函数看成一个黑盒,作用是
{         //遍历,参考中序遍历函数,只要把printf的函数替换为
 bitree *temp;     //交换的函数即可;

 if(p!=NULL)
 {
  temp=p->lchild;
  p->lchild=p->rchild;
  p->rchild=temp;
  Exchange(p->lchild);
  Exchange(p->rchild);
 } 
 return p;
}

void inorder(bitree *p)
{
 if(p!=NULL)
 {
  inorder(p->lchild);
  printf("%c",p->data);
  inorder(p->rchild);
 }
 return;
}

int main()
{
 root=CreatTree();
 printf("交换前的二叉树进行中序排列/n");
 inorder(root);
 root=Exchange(root);
 printf("交换后的二叉树进行中序排列/n");
 inorder(root);
 printf("程序结束.../n");
 return 0;
}

剑指offer 面试题21.22—栈操作以及判断弹出序列

题目: 1.定义栈数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push以及pop的时间复杂度都是O(1)。 2.输入两个整数序列,第一个序列表示栈的压入顺序,...
  • wtyvhreal
  • wtyvhreal
  • 2015年04月30日 09:56
  • 665

剑指offer-面试题21:包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1). 思路:时间复杂度O(1)?刚开始看到觉得不可能实现,对栈...
  • moses1213
  • moses1213
  • 2016年03月31日 20:40
  • 337

NYOJ 21 三个水杯

一开始都没想到使用BFS做的。。。。 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大...
  • u011694809
  • u011694809
  • 2015年06月02日 09:54
  • 729

Lua_第 21 章 操作系统库

操作系统库包含了文件管理,系统时钟等等与操作系统相关信息。这些函数定义在表(table)os 中。定义该库时考虑到 Lua 的可移植性,因为 Lua是以 ANSI C 写成的, 所以只能使用 ANSI...
  • heyuchang666
  • heyuchang666
  • 2016年04月06日 14:32
  • 821

機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答

今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答。笔者在做这些题目时遇到很多困难,当我在网上寻找答案时却找不到,而林老...
  • a1015553840
  • a1015553840
  • 2016年04月09日 10:22
  • 3408

阿朴橡皮章教程——进阶版[套色]【转侵删】

个人比较喜欢做手工类的东西  所以转两篇橡皮章教程上来  原作者阿朴  用手机在《约绘》上扫描下来的 并非用作商业用途  如有侵权请告知  会马上删掉...
  • goblinlq
  • goblinlq
  • 2015年03月23日 23:54
  • 981

计算机科学-第3周 排序和查找 题目及参考解答

《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597本周练习需要的数据文件下载自:链接练习一  salary.tx...
  • sxhelijian
  • sxhelijian
  • 2014年03月14日 19:45
  • 1563

章文嵩:怎样做开源才有意义?

大家好,我是InfoQ的主持人,现在在架构师峰会现场。今天我们很高兴邀请到阿里云的技术负责人章文嵩博士来接受我们的采访。第一个问题是有关淘宝-阿里系的开源进程,我们从外面看起来似乎是有三个比较明显的阶...
  • robertsong2004
  • robertsong2004
  • 2014年08月20日 14:47
  • 1208

ACCP S1 C#第十四章 第十五章 上机练习

上机1,2using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys...
  • baidu_36074048
  • baidu_36074048
  • 2016年11月29日 16:54
  • 1209

機器學習基石(Machine Learning Foundations) 机器学习基石 作业四 课后习题解答

大家好,我是Mac Jiang,今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业四的习题解答。笔者在做这些题目时遇到很多困难,当我...
  • a1015553840
  • a1015553840
  • 2016年04月17日 16:05
  • 4597
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第就章第21题(赶出来的作业) POWERBY KTL
举报原因:
原因补充:

(最多只允许输入30个字)