二叉树前中后遍历

简介: 二叉树前中后遍历
#include <stdio.h>
#include <malloc.h>
typedef char ElemType;//二叉树数组类型为字符
//二叉树定义
typedef struct node
{
  ElemType data;//节点信息
  struct node* lchild, * rchild;//左右儿子,增加,*parent双亲指针就是三叉链
}Bnode,*BTree;
//初始化二叉链
void InitBTree(BTree& BT)
{
  BT = NULL;
}
//创建二叉链
void CreateBTree(BTree &BT)//分别指向左右
{
  char data;
  data = getchar();
  if (data == '#')  BT = NULL;
  else
  {
    BT = (BTree)malloc(sizeof(Bnode));//分配空间
    BT->data = data;
    CreateBTree(BT->lchild);//分别创建左右节点
    CreateBTree(BT->rchild);
  }
}
//void visit(BTree p)
//{
//  printf_s("%c", p->data);//访问根节点
//}
//先序(根)遍历
void preorder(BTree p)
{
  if (p != NULL)
  {
    //visit(p);
    printf_s("%c", p->data);//访问根节点
    preorder(p->lchild);//遍历左
    preorder(p->rchild);//遍历右
  }
}
//中序(根)遍历
void inorder(BTree p)
{
  if (p != NULL);
  {
    inorder(p->lchild);//中根顺序遍历左子树
    //visit(p);//访问根节点
    printf_s("%c", p->data);//访问根节点
    inorder(p->rchild);
  }
}
//后根遍历
void postorder(BTree p)
{
  if (p != NULL)
  {
    postorder(p->lchild);//按后根遍历左子树
    postorder(p->rchild);
    //visit(p);
    printf_s("%c", p->data);//访问根节点
  }
}
int main()
{
  BTree bt;
  //printf_s("二叉树初始化中....");
  InitBTree(bt);//初始化树
  printf_s("请输入给定的先根序列:\n");
  CreateBTree(bt);//创建树
  printf_s("给定的二叉树先跟序列为:\n");
  preorder(bt);//先跟遍历
  printf_s("二叉树中序序列结果为:\n");
  inorder(bt);//中根遍历
  printf_s("二叉树后序序列为:\n");
  postorder(bt);//后根遍历
  return 0;
}

有问题留言

相关文章
|
6月前
|
存储 算法
深度优先搜索遍历与广度优先搜索遍历
深度优先搜索遍历与广度优先搜索遍历
49 3
|
存储 算法
二叉树的创建和遍历
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分
90 0
|
存储 算法
二叉树的三序遍历
简要介绍二叉树的三序遍历和重构和代码实现。
101 0
二叉树的实现(前中后层序四种遍历)
二叉树的实现(前中后层序四种遍历)
54 0
二叉树四种遍历的实现
二叉树四种遍历的实现
100 0
|
机器学习/深度学习 C++ 容器
二叉树创建和遍历(C++实现)
树(Tree)是n(n≥0)个节点的有限集。在任意一棵树中有且仅有一个特定的称为根(Root)的节点;当n>1时,其余节点可分m(m>0)为个互不相交的有限集T1,T2,...,Tm;其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。 二叉树(Binary Tree)是一种特殊的有序树型结构,所有节点最多只有2棵子树。
649 0
二叉树的三种遍历方式
二叉树的三种遍历方式
228 0
二叉树的三种遍历方式
|
算法 Python
LeetCode 987. 二叉树的垂序遍历
给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。
95 0
|
iOS开发
二叉树非递归前中后遍历
因为个人身体原因,本周都在医院住院治疗身体,身边没有电脑,只能分享一些这周看过的比较好的书籍内容。iPad上传csdn图片顺序会有误,看书的页码就好。
二叉树非递归前中后遍历