您的位置:首页 > 其它

前缀、中缀、后缀表达式与二叉树的前序、中序、后序遍历

2010-06-18 10:32 671 查看
一、表达式与二叉树的关系

前缀表达式对应于二叉树的前序遍历;

中缀表达式对应于二叉树的中序遍历;

后缀表达式对应于二叉树的后序遍历;



二、根据中缀表达式生成二叉树

中缀表达式:a + b * (c - d) - e / f

中序遍历为:左儿子、右儿子、根节点

按照操作符的优先级,其二叉树生成过程为:

1. c-d的优先级高,根是-操作符,c和d分别为左右儿子

-

| |

c d

2.接下来是乘法,根是*操作符,b和1中的内容分别是左右儿子

*

| |

b -

| |

c d

3.接下来是触发,根是/操作符,e和f分别是左右儿子

/

| |

e f

4.接下来是加法,根是+操作符,a和2中的内容分别是左右儿子

+

| |

a *

| |

b -

| |

c d

还包括3中的那棵树。

5. 接下来是减法,根是-操作符,4中的两棵树分别是左右儿子

-

| |

+ /

| | | |

a * e f

| |

b -

| |

c d



三、根据二叉树前序遍历得到前缀表达式

前序遍历为:根节点、左儿子、右儿子

得到前缀表达式为:- + a * b - cd / ef



四、根据二叉树后序遍历得到后缀表达式

后序遍历为:左儿子、右儿子、根节点

得到后缀表达式为:abcd - * + ef / -



五、小结

若可以根据前缀、中缀、或后缀表达式确定一颗二叉树,则可以生成相应的前缀、中缀、后缀表达式。

前序遍历、中序遍历、后续遍历的结义方法:

1. 前序就是根节点在前边,中序就是根节点在中间,后续就是根节点在后边

2. 总是先左儿子,再右儿子。

前序:根节点、左儿子、右儿子

中序:左儿子、根节点、右儿子

后续:左儿子、右儿子、根节点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: