数据结构——树形结构的应用

博客介绍了树形结构在算数表达式求值中的应用,包括先序、中序和后序遍历方式,并解析了它们的特点和运算规则。同时,提到了树形结构在解决等价问题中的静态树表节点双亲表示法。
摘要由CSDN通过智能技术生成

1 算数表达式求值


三种遍历方式

①先序遍历次序(前缀式):+ * 3 - 6 2 / 8 2

②中序遍历方式(中缀式):3 * 6 - 2 + 8 / 2

③后序遍历方式(后缀式):3 6 2 - * 8 2 / +

由表达式的三种标识方法,可得到如下结论:

①操作数之间的相对次序不变

②运算符的相对次序不同

③中缀式丢失了括号信息,致使运算的次序不确定

④前缀式的运算规则是:连续出现的两个操作数和在它们之前且紧靠它们的运算符构成一个最小表达式。

⑤后缀式的运算规则是:运算符在式中出现的顺序恰为表达式的运算顺序;每个运算符和在它之前出现且紧靠它的两个操作数构成一个最小表达式。

实现代码:

//BinaryExpTree.h
#pragma once
#include "BTnode.h"
#include <windows.h>
class BinaryExpTree
{
public:
	BinaryExpTree():m_root(NULL){}
	~BinaryExpTree();
	void Create(char ch1[],char ch2[],int);
	int Evaluate();
private:
	BTnode<char>* m_root;
	void _DestroyBT(BTnode<char>* &);
	int _Evaluate(BTnode<char>* &);
	int _Operate(const int&, const char&, const int&);
	void _Create(BTnode<char>* &,char ch1[],char ch2[],int,int,int&);
};
//BinaryExpTree.cpp
#include "BinaryExpTree.h"

BinaryExpTree::~BinaryExpTree()
{
	_DestroyBT(m_root);
}

void BinaryExpTree::Create(char ch1[],char ch2[],int n)
{
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值