摘要:
(1)表达式树的树叶是操作数。其他节点为操作符。
(2)通过递归产生一个带括号的左表达式,然后打出根的操作符号,再递归的产生右表达式。这是一种中缀表达(也是中序遍历)
(3)另一种方式是进行后序遍历,产生一个后缀表达式。
(4)现在给出一种教材上的构造表达式树的算法:
【1】首先输入一个后缀表达式(如果不是需要转换)
【2】依次读入元素,如果是操作数,则建立一个单节点树,并将指向它的指针压入栈。如果是操作符,就栈中弹出两棵树并将该操作符作为一个新的根,两棵树分别为左右儿子。然后将这个新的树压入栈。
代码如下
:
#include "stdafx.h"
#include "stdlib.h"
#include "malloc.h"
#define EmptyTos -1
typedef struct StackRecord *Stack;