Tree

Tree Traversal

  • Preorder/Inorder/Postorder 是 DFS method.
    • 函數呼叫次數都是 2n+1,
  • Level-order 是 BFS method.
Implem. Example:
void preorder(treePtr node) {
    if (node == null) return;
    else {
        visit(node);
        preorder(node->lchild);
        preorder(node->rchild);
    }
}

Rebuild Tree

有兩種序,就有機會還原出唯一一棵二元樹。

比方說,只知道 preorder 和 inorder ,求出原本的二元樹。運用 Divide and Conquer:

preorder,VLR 最左邊的元素就是 root

inorder,LVR 兩邊分別為左右子樹,中間是 root

利用 root 便可區分左子樹和右子樹。子樹也是樹,可以用相同手法繼續分割,最後便可求出整棵樹的架構。但是只有 preorder 和 postorder 的話,是做不出答案的。因為無法確定樹根的位置。

References

results matching ""

    No results matching ""