前綴、中綴、後綴表達式與二叉樹的前序、中序、後序遍歷

原帖地址

一、表達式與二叉樹的關係

前綴表達式對應於二叉樹的前序遍歷;

中綴表達式對應於二叉樹的中序遍歷;

後綴表達式對應於二叉樹的後序遍歷;

 

二、根據中綴表達式生成二叉樹

中綴表達式: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. 總是先左兒子,再右兒子。

前序:根節點、左兒子、右兒子

中序:左兒子、根節點、右兒子

後續:左兒子、右兒子、根節點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章