1. 程式人生 > >樹的遍歷方法(轉)

樹的遍歷方法(轉)

  • 二叉樹的遍歷(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)型,(左 中 右)

  • 後續遍歷

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

  • 層序遍歷

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