二元樹後序遍歷

2019-10-16 22:02:44

二元樹後序遍歷的步驟如下:

  • 按後序遍歷左子樹
  • 按後序遍歷右子樹
  • 存取根節點

演算法

第1步:重複第2步到第4步,同時TREE!= NULL
第2步:POSTORDER(TREE -> LEFT)
第3步:POSTORDER(TREE -> RIGHT)
第4步:寫入TREE -> DATA
        [迴圈結束]
第5步:結束

C語言程式碼實現

void post-order(struct treenode *tree)  
{  
    if(tree != NULL)  
    {  
        post-order(tree→ left);  
        post-order(tree→ right);  
        printf("%d",tree→ root);  
    }  
}

範例

使用後序遍歷遍歷以下樹 -

  • 列印二元樹左子樹的左子節點,即23
  • 列印二元樹左子樹的右子節點,即89
  • 列印左子樹的根節點,即211
  • 現在,在列印根節點之前,移動到右子樹並列印左子節點,即10
  • 列印右子節點,即32
  • 列印根節點,即20
  • 最後,列印樹的根,即18

最後列印順序為:23,89,211,10,32,18