0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# 二叉树的三种遍历

按照先遍历左子树后遍历右子树的约定,​根据访问根结点位置的不同,可得到二叉树的​先序、中序和后序3种遍历方法

一、先序遍历

先序遍历就是先遍历根节点,然后遍历左子树,最后遍历右子树。对于左子树或者右子树本身,也是符合先序遍历的顺序的,也就是遍历的递归性质:子树本身也是作为一颗单独的二叉树看待的。对于算术表达式,先序遍历后得到前缀表达式。

二、中序遍历

中序遍历就是先遍历左子树,然后遍历根节点,最后遍历右子树。对于左子树或者右子树本身,也是符合中序遍历的顺序的,也就是遍历的递归性质:子树本身也是作为一颗单独的二叉树看待的。对于算术表达式,中序遍历后得到中缀表达式,此时需要注意的是,中缀表达式是需要根据具体情况通过添加括号来表示优先级的,也是我们看着最顺眼的一种形式。

三、后续遍历

后序遍历就是先遍历左子树,然后遍历右子树,最后遍历根节点。对于左子树或者右子树本身,也是符合后序遍历的顺序的,也就是遍历的递归性质:子树本身也是作为一颗单独的二叉树看待的。对于算术表达式,后序遍历后得到后缀表达式,后缀表达式又叫做逆波兰式。例如对于算术表达式:a+b-c*d。其后缀表达式计算过程为:

(1)先把字母按顺序列出来,即abcd;

(2)然后按照计算的优先级往字母后面加符号。此时按照优先级应该先计算c*d,所以先往cd后面加一个*,即:abcd*,此时cd*就相当于和a一样的一个字符值。

(3)然后计算a+b,所以往ab后面加一个+,即ab+cd*,此时ab+就相当于和a一样的一个字符值。

(4)最后计算a+b的结果减去c*d的结果,也就是往最后加一个-,即ab+cd*-。

举报

相关推荐

0 条评论