当前位置:首页 > 算法 > 正文内容

广义表输出二叉树

浩雨6年前 (2019-11-18)算法5304

广义表输出二叉树用到的主要是递归,递归的整个过程类似于栈,一层一层进去,最终会一层一层退出来,进去和退出的顺序跟栈的性质一致。

#include<stdio.h>
#include<stdlib.h>
typedef struct tnode{
	char data;	//二叉树结点值
	struct tnode *lchild,*rchild;
}BT;
/*以先序序列输入结点的值*/
BT *CreateBTree(){
	BT *t;
	char ch;
	scanf("%c",&ch);
	getchar();
	if(ch == '0')	//读入'0'时,将相应结点置空 
		t = NULL;
	else{
		t = (BT	*)malloc(sizeof(BT));	//新建结点
		//【结构体指针类型名 = (结构体类型名*) malloc (sizeof(结构体类型名))】 
		t->data = ch;
		printf("请输入%c结点的左孩子的结点:",t->data);
		t->lchild = CreateBTree();
		printf("请输入%c结点的右孩子的结点:",t->data);
		t->rchild = CreateBTree();
	}
	return t;
}
void ShowBTree(BT *T){
	if(T != NULL){
		printf("%c",T->data);	//输入该结点数据域
		if(T->lchild != NULL){
			printf("(");
			ShowBTree(T->lchild);
			if(T->rchild != NULL){
				printf(",");
				ShowBTree(T->rchild);
			}
			printf(")");
		}
		else if(T->rchild != NULL ){	//若左子树为空,右子树不为空
			printf("(");
			ShowBTree(T->lchild);
			if(T->rchild != NULL){
				printf(",");
				ShowBTree(T->rchild);
			}
			printf(")");
		}
	}
}
main(){
	BT *T = NULL;
	char flag;
	printf("请按先序序列输入二叉树的结点:\n");\
	printf("说明:输入结点后按回车('0'表示后继结点为空)\n");
	printf("请输入根结点:");
	T = CreateBTree();
	printf("二叉树建立成功!\n");
	printf("\n按广义表输出的二叉树为:");
	ShowBTree(T);
}


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/63.html

分享给朋友:

“广义表输出二叉树” 的相关文章

算法初步

算法初步

假设我让你计算1+2+3+...+5000等于多少,有两种常见的方法:    1、按部就班累加    2、使用公式,(首项+末项)*项数/2假设你使用第一种方法从头到尾不出错的计算,可能也需要几个小时才能计算出来,但是如...

爬楼梯问题的简单实现-递归

爬楼梯问题的简单实现-递归

如楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编写程序计算共有多少种不同的走法。例如,当n=3时,共有3种走法,即1+1+1,1+2,2+1,当n=4时,共有5种走法,即1+1+1+1,2+2,2+1+1,1+2+1,1+1+2。算法分析:设n阶台阶的走法数为f( n ),显然有:(1)f...

二叉树的应用

二叉树的应用

(1)     创建一棵二叉树;(2)     二叉树的先序递归遍历;(3)     二叉树的中序递归遍历;(4)     二叉树的后序递归...

(LeetCode刷题)1. 两数之和

(LeetCode刷题)1. 两数之和

题目解答一:/**  * Note: The returned array must be malloced, assume caller calls free(). &nbs...

(LeetCode刷题)2. 两数相加

(LeetCode刷题)2. 两数相加

题目解答一:简单实现思路:先遍历完两个链表,把各自的数字存入两个数组,然后对应位置的数相加,若结果大于10就进位到更高位的数。/**  * Definition for singly-linked list->  * s...