樹的遍歷方法(轉)
阿新 • • 發佈:2018-12-12
- 二叉樹的遍歷(traversing binary tree)是指從根結點出發,按照某種次序依次訪問二叉樹中所有的結點,使得每個結點被訪問依次且僅被訪問一次。
前序 | 中 | 左 | 右 |
---|---|---|---|
中序 | 左 | 中 | 右 |
後序 | 左 | 右 | 中 |
st=>start: 開始 e=>end: 結束 op=>operation: 根結點 op2=>operation: 左子樹 io=>inputoutput: 右子樹 cond=>condition: 二叉樹是否為空? st->cond cond(yes)->e cond(no)->e op->op2->io->e
- 前序遍歷
若樹為空,則空操作返回。否則,先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹。(W)型 (中 左 右)

- 中序遍歷
若樹為空,則空操作返回。否則,從根節點開始(注意並不是先訪問根節點),中序遍歷根節點的左子樹,然後是訪問根節點,最後中序遍歷根節點的右子樹。(M)型,(左 中 右)

- 後續遍歷
若樹為空,則空操作返回。否則,從左到右先葉子後節點的方式遍歷訪問左右子樹,最後訪問根節點。(左右中)逆時針型 (左 右 中)

- 層序遍歷
若樹為空,則空操作返回。否則,從樹的第一層,也就是根節點開始訪問,從上到下逐層遍歷,在同一層中,按從左到右的順序結點逐個訪問。
- 二叉樹的遍歷(traversing binary tree)是指從根結點出發,按照某種次序依次訪問二叉樹中所有的結點,使得每個結點被訪問依次且僅被訪問一次。
前序 | 中 | 左 | 右 |
---|---|---|---|
中序 | 左 | 中 | 右 |
後序 | 左 | 右 | 中 |
st=>start: 開始 e=>end: 結束 op=>operation: 根結點 op2=>operation: 左子樹 io=>inputoutput: 右子樹 cond=>condition: 二叉樹是否為空? st->cond cond(yes)->e cond(no)->e op->op2->io->e
- 前序遍歷
若樹為空,則空操作返回。否則,先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹。(W)型 (中 左 右)

- 中序遍歷
若樹為空,則空操作返回。否則,從根節點開始(注意並不是先訪問根節點),中序遍歷根節點的左子樹,然後是訪問根節點,最後中序遍歷根節點的右子樹。(M)型,(左 中 右)

- 後續遍歷
若樹為空,則空操作返回。否則,從左到右先葉子後節點的方式遍歷訪問左右子樹,最後訪問根節點。(左右中)逆時針型 (左 右 中)

- 層序遍歷
若樹為空,則空操作返回。否則,從樹的第一層,也就是根節點開始訪問,從上到下逐層遍歷,在同一層中,按從左到右的順序結點逐個訪問。