二叉树的基本操作小结

2014-10-30 22:15:19 · 作者: · 浏览: 68

  二叉树的一般操作,实现了下:


  主要练习了二叉树的非递归遍历,利用栈,和队列来完成。算法思想,没描述清楚,表达能力很差...崩溃....


  代码


  #include "stdio.h"


  #include "malloc.h"


  #define MAXSIZE 20


  //二叉树结点的结构体表示形式


  typedef struct node


  {


  char data;


  struct node* left,*right;


  }BTree;


  //栈的结构体表示形式


  typedef struct stackelem


  {


  BTree* a[MAXSIZE];


  int top;


  }Stack;


  //队列的结构体的表示形式


  typedef struct queueelem


  {


  BTree* b[MAXSIZE];


  int front,rear;


  }Queue;


  //创建二叉树,利用递归的方法


  BTree* Create()


  {


  char ch;


  scanf_s("%c",&ch);


  getchar();


  if (ch=='#')


  {


  return NULL;


  }


  else


  {


  BTree* btree=(BTree*)malloc(sizeof(BTree));


  if (NULL==btree)


  {


  return NULL;


  }


  btree->data=ch;


  btree->left=Create();


  btree->right=Create();


  return btree;


  }


  }


  //前序遍历,递归的方法


  void Preorder(BTree* bt)


  {


  if (NULL!=bt)


  {


  printf("%c ",bt->data);


  Preorder(bt->left);


  Preorder(bt->right);


  }


  }