第九章第十七题(赶出来的作业) powerby ktl

原创 2006年05月30日 21:49:00

//第九章第17题;用非递归算法设计先序遍历二叉树;
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#define N 15   //需要设置栈的最大值,若二叉树深度为四,则设置2^4-1=15;
#define maxsize 15  //本程序根据书本p194,图9-8,输入数据为ABCDEFG@@@@L@@@#,输出为先序排列:ABDECFLG;

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 *stack[N];
void preorder(bitree*p)
{
 printf("本函数实现的是先序非递归排列./n");
 bitree *s;
 int top;
 if(p!=NULL)
 {
  top=-1;
  s=p;
  while((top!=-1)||(s!=NULL))
  {
   while(s!=NULL)
   {
    if(top==N-1)
    {
     printf("上溢/n");
     return;
    }
    else
    {
     top++;
     printf("%c",s->data);  //与中序不同在于printf的位置要在进行左子树遍历之前;
     stack[top]=s;
     s=s->lchild;
    }
   }
   s=stack[top];
   top--;
  // printf("%c",s->data);原来中序遍历的时候printf的位置;
   s=s->rchild;
  // printf("%c",s->data);加在这为后序遍历;
  }
 }
 return;
}

int main()
{
 root=CreatTree();
 preorder(root);
 return 0;
}

汇编语言 第九章 作业

  • 2012年03月15日 17:47
  • 288KB
  • 下载

第九章作业~

第一题关于打印输出数字:   public class T09{public static void main(String[] args){Scanner input = new Scanner(S...

第十七题(找出字符串中第一个只出现一次的字符)

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006 年go...

经典算法题每日演练——第十七题 Dijkstra算法

或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划” 这些经典策略,当然有的问题我们可以用贪心来寻求整体最优解,在图...
  • Aiphis
  • Aiphis
  • 2015年07月28日 16:35
  • 418

剑指offer第十七题之第二十六题(java详解)

目录 第17题:合并两个排序的链表 第18题:树的子结构 第19题:二叉树的镜像 第20题:顺时针打印矩阵 第21题:包含min函数的栈 第22题:栈的压入、弹出序列 第23题:从上往下打印二叉树 第...

《C++ Primer Plus(第六版)》(15)(第九章 内存模型和命名空间 编程题答案)

1. Test.h #ifndef _Test_H_ #define _Test_H_ const int Len = 40; struct golf { char fullname[Len]; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第九章第十七题(赶出来的作业) powerby ktl
举报原因:
原因补充:

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