二叉树的创建与遍历

来源:互联网 发布:自学单片机编程 编辑:程序博客网 时间:2024/06/05 07:12

1.二叉树创建

//创建二叉树, 先序顺序  int CreateBiTree(pBiTree *root)  {      char ch = 0;      fflush(stdin);      if ((ch = getchar()) == 'a')//控制树的结构      {          *root = NULL;      }      else      {          *root = (BiTNode *)malloc(sizeof(BiTNode));          if (!(*root))          {              return RET_ERROR;          }          (*root)->data = GetRandom();          CreateBiTree(&(*root)->leftChild);          CreateBiTree(&(*root)->rightChild);      }      return RET_OK;  } 


2.二叉树的遍历

先序遍历(根结点->左子树->右子树)

中序遍历(左子树->根结点->右子树)

后序遍历(左子树->右子树->根结点)

int PreOrderVisitTree(pBiTree T, VisitType pFuncVisit)  {      if (T)      {          (*pFuncVisit)(T->data);          if (PreOrderVisitTree(T->leftChild, pFuncVisit) == RET_OK)          {              if (PreOrderVisitTree(T->rightChild, pFuncVisit) == RET_OK)              {                  return RET_OK;              }          }          return RET_ERROR;      }      else      {          return RET_OK;      }  }  




原创粉丝点击