建立表达式二叉树。
给定表达式为:a*b+(c-d)/e
要求:首先调用中缀后缀转换程序,实现中缀表达式到后缀表达式的转换;然后针对后缀表达式边读表达式边建立二叉树。
可正向打印二叉树,若有困难,可逆时针转动90度再打印。
=============================================
源代码
--------------------------------------------------
tnode.h
-------------------------------------------------
#include<iostream>
using namespace std;
#include <stack>
#include <iomanip>
template <typename T>
class tnode
{
public:
T nodeValue;
tnode<T> *left, *right;
tnode(){}
tnode (const T& item, tnode<T> *lptr = NULL, tnode<T> *rptr = NULL):nodeValue(item), left(lptr), right(rptr){}
tnode<T>* buildTree(string exp);
int depth(tnode<T> *root);
void print(tnode<T> *node_ptr, int depth);
};
template <typename T>
tnode<T> *tnode<T>::buildTree(string exp)
{
int i=0;
stack<tnode<T>*> tex;
tnode<T> *a;
T b=exp[i++];
while(b!='\0')
{
if(b!='*' && b!='/' && b!='+' && b!='-' && b!='%'){
a=new tnode<T>(b);