按树状打印二叉树

代码是为了实现二叉树的横向显示问题。这种树形要求先打印右子树,再打印根,最后打印左子树,顺序恰为逆中序顺序。这种输出格式,结点的左右位置与结点的层深有关,故算法中设置了一个表示当前根节点层深的参数,以控制输出结点的左右位置。

示意图:

《按树状打印二叉树》

代码如下:

 

《按树状打印二叉树》
#include 
<
stdio.h
>

《按树状打印二叉树》#include 

<
stdlib.h
>

《按树状打印二叉树》

#define
 OVERFLOW -2

《按树状打印二叉树》

#define
 INFEASIBLE -1

《按树状打印二叉树》

#define
 ERROR 0

《按树状打印二叉树》

#define
 OK 1

《按树状打印二叉树》

#define
 TRUE 1

《按树状打印二叉树》

#define
 FALSE 0

《按树状打印二叉树》
《按树状打印二叉树》typedef 

char
 TElemType;
《按树状打印二叉树》TElemType Nil

=

#

;
《按树状打印二叉树》
《按树状打印二叉树》typedef 

struct
 BiTNode
《按树状打印二叉树》《按树状打印二叉树》


{
《按树状打印二叉树》    TElemType data;
《按树状打印二叉树》    BiTNode 
*lchild,*rchild;
《按树状打印二叉树》}

BiTNode,
*
BiTree;
《按树状打印二叉树》
《按树状打印二叉树》

int
 InitBiTree(BiTree 
*
T)
《按树状打印二叉树》《按树状打印二叉树》


{
《按树状打印二叉树》    
*T=NULL;
《按树状打印二叉树》    
return OK;
《按树状打印二叉树》}


《按树状打印二叉树》

void
 CreateBiTree(BiTree 
*
T)
《按树状打印二叉树》《按树状打印二叉树》


{
《按树状打印二叉树》    TElemType ch;
《按树状打印二叉树》    scanf(
%c,&ch);
《按树状打印二叉树》    
if(ch==Nil)
《按树状打印二叉树》        (
*T)=NULL;
《按树状打印二叉树》    
else
《按树状打印二叉树》《按树状打印二叉树》    
{
《按树状打印二叉树》        (
*T)=(BiTree)malloc(sizeof(BiTNode));
《按树状打印二叉树》        
if(!(*T))
《按树状打印二叉树》            exit(OVERFLOW);
《按树状打印二叉树》        (
*T)->data=ch;
《按树状打印二叉树》        CreateBiTree(
&(*T)->lchild);
《按树状打印二叉树》        CreateBiTree(
&(*T)->rchild);
《按树状打印二叉树》    }

《按树状打印二叉树》}


《按树状打印二叉树》 

void
 PrintTree(BiTree 
*
T,
int
 Layer)
《按树状打印二叉树》《按树状打印二叉树》 


{/**//*按竖向树状打印的二叉树*/
《按树状打印二叉树》     
int i;
《按树状打印二叉树》     
if(*T==NULL)
《按树状打印二叉树》         
return;
《按树状打印二叉树》     PrintTree(
&(*T)->rchild,Layer+1);
《按树状打印二叉树》     
for(i=0;i<Layer;i++)    
《按树状打印二叉树》         printf(
  );
《按树状打印二叉树》     printf(
%c ,(*T)->data);    //按逆中序输出结点,用层深决定结点的左右位置
《按树状打印二叉树》
     PrintTree(&(*T)->lchild,Layer+1);
《按树状打印二叉树》 }


《按树状打印二叉树》
《按树状打印二叉树》 

void
 main()
《按树状打印二叉树》《按树状打印二叉树》 


{
《按树状打印二叉树》     BiTNode
* T;
《按树状打印二叉树》     InitBiTree(
&T);
《按树状打印二叉树》     printf(
请先序输入二叉树(如:AB###表示A为根结点,B为左子树的二叉树) );
《按树状打印二叉树》     CreateBiTree(
&T);
《按树状打印二叉树》     PrintTree(
&T,0);
《按树状打印二叉树》 }


《按树状打印二叉树》
《按树状打印二叉树》

    原文作者:lingang_
    原文地址: https://blog.csdn.net/lingang_/article/details/2107474
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞