编程:按先序序列输出二叉树的叶子结点

源程序:

#include <iostream>

#include <stack>

using namespace std;

typedef struct bitreenode

{

  char data;

  struct bitreenode *lchild, *rchild;

}*Bitree;

//创建二叉树

void createbitree(Bitree &T)

{

  char data;

  data = getchar();

  if (data == '#')

  {

    T = NULL;

  }

  else

  {

    T = new bitreenode;

    T->data = data;

    createbitree(T->lchild);

    createbitree(T->rchild);

  }

}; 

//按先序次序打印叶子结点

void pre_leaf(Bitree T)//T 为根结点指针

{

  if (T!= NULL)

  {

    if (T->lchild == NULL && T->rchild == NULL)

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

    pre_leaf(T->lchild);

    pre_leaf(T->rchild);

  }

}

///////////////主函数///////////////

void main()

{

  Bitree t = NULL;

  printf("请按以下两种序列输入二叉树的结点: ");

  printf("AB#D##CE### 或 ABD##E##C#F## ");

  createbitree(t);

  printf("先序次序打印的叶子结点为:");

  pre_leaf(t);//按先序次序打印叶子结点

  system("pause");

}

运行结果:

原文地址:https://www.cnblogs.com/duanqibo/p/11423535.html