问题描述 设计一个递归算法,将一棵二叉树逆时针90度打印出来。如下图左的二叉树,以图右的形式打印。 解决方法 通过观察不难发现,其实是二叉树的先右后左的中序遍历。 #inclu
问题描述
设计一个递归算法,将一棵二叉树逆时针90度打印出来。如下图左的二叉树,以图右的形式打印。
解决方法
通过观察不难发现,其实是二叉树的先右后左的中序遍历。
#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree *T)
{
char ch;
ch=getchar();
if(ch=='#')
*T=NULL;
else
{
(*T)=(BiTNode*)malloc(sizeof(BiTNode));
if(!*T)
exit(OVERFLOW);
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
return OK;
}
void fun2(BiTree T,int n)
{
int i=0;
if(T)
{
fun2(T->rchild,n+3);
for(i=0;i<=n;i++)
printf(" ");
printf("%c\n",T->data);
fun2(T->lchild,n+3);
}
}
int main()
{
BiTree T;
int n=0;
printf("请先输入一个二叉链表:");
CreateBiTree(&T);
printf("逆时针90度的二叉链表为:\n");
fun2(T,5);
return 0;
}