【数据结构noj 017】

题目:思路:输入的时候是先序,先写一个先序创建二叉树的函数,这个题要求按正常顺序输出一个表达式。我想起来之前做过的一道题:逆波兰式,这个题的输入实际上就是一个前序表达式。结合那个题的思路就能发现把刚刚建立的二叉树按中序遍历输出就能的到中序表达式。实现:#include<iostream>using namespace std;typedef struct BiNode{ char data; struct BiNode *lchild, *rchild;}BiNode
摘要由CSDN通过智能技术生成

题目:

思路:输入的时候是先序,先写一个先序创建二叉树的函数,这个题要求按正常顺序输出一个表达式。我想起来之前做过的一道题:逆波兰式,这个题的输入实际上就是一个前序表达式。结合那个题的思路就能发现把刚刚建立的二叉树按中序遍历输出就能的到中序表达式。

实现:

#include<iostream>

using namespace std;

typedef struct BiNode{
	char data;
	struct BiNode *lchild, *rchild;
}BiNode, *BiTree; 

BiTree PreOrder_CreateBiTree() //递归先序创建二叉树 
{
	char c = getchar();
	if(c == '#') return NULL;
	else{
		BiTree node;
		node = (BiNode*)malloc(sizeof(BiNode));
		node->data = c;
		node->lchild = PreOrder_CreateBiTree();
		node->rchild = PreOrder_CreateBiTree();
		return node;
	}
}

void InOrder_OutputBiTree(BiTree root)//中序输出二叉树 
{
	if(root->lchild)  InOrder_OutputBiTree(root->lchild);
	cout << root->data;
	if(root->rchild)  InOrder_OutputBiTree(root->rchild);
}

int main()
{
	BiTree T;
	T = (BiNode*)malloc(sizeof(BiNode));
	T = PreOrder_CreateBiTree();
	InOrder_OutputBiTree(T); 
	return 0;
}

总结:记住二叉树的创建模式,以后都按这个模式写;and递归真好用!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值