当前位置 : 主页 > 编程语言 > c语言 >

【每日编程】Day 3逆时针90度打印二叉树

来源:互联网 收集:自由互联 发布时间:2023-09-06
问题描述 设计一个递归算法,将一棵二叉树逆时针90度打印出来。如下图左的二叉树,以图右的形式打印。 解决方法 通过观察不难发现,其实是二叉树的先右后左的中序遍历。 #inclu

问题描述

设计一个递归算法,将一棵二叉树逆时针90度打印出来。如下图左的二叉树,以图右的形式打印。

【每日编程】Day 3逆时针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;
}
上一篇:C语言简单
下一篇:没有了
网友评论