层次遍历二叉树

2014-11-23 19:36:52 · 作者: · 浏览: 18

按先序序列输入字符序列(其中逗号表示空节点),输出该二叉树的层次遍历序列。

\\

#include 
  
   
#define END ','//表示空节点
using namespace std;
typedef char Elem_Type;
typedef struct BiTree
{
    Elem_Type data;
    struct BiTree *Lchild;
    struct BiTree *Rchild;
}BiTree;
BiTree *CreateBiTree(void)
{
    Elem_Type value;cin>>value;
    if(value == END)
      return NULL;
    BiTree *root = new BiTree;
    root->data = value;
    root->Lchild = CreateBiTree();
    root->
Rchild = CreateBiTree(); return root; } int BiTreeDepth(BiTree *root) { if( !root ) return 0; return max( BiTreeDepth(root->Lchild),BiTreeDepth(root->Rchild) ) + 1; } void PrintBiTree(BiTree *root,int level) { if( !root )//不写这个会有段错误发生 return; if(level == 1 ) cout< data; else { PrintBiTree(root->Lchild,level - 1); PrintBiTree(root->Rchild,level - 1); } } void LeveOrderTraverse(BiTree *root) { int depth = BiTreeDepth(root); for(int i=1; i <= depth; i++) { PrintBiTree(root,i); cout<