Binary Tree traversal

深度優先 (Depth-first)

1.In-Order Traversal (LVR)

  • 中序

  • 步驟

    • 1.訪問左子樹

    • 2.訪問根節點

    • 3.訪問右子樹

  • 特性

    • 如果以Inoder走訪BST, 則可以得到一個有序數列

  • Code

void BinaryTree::Inorder(TreeNode *current){
    if (current) {
        // if current != NULL
        Inorder(current->leftchild);// L
        std::cout << current->str << " "; // V
        Inorder(current->rightchild); // R
    }
}

2.Post-Order Traversal (LRV)

  • 後序

  • 步驟

    • 1.訪問左子樹

    • 2.訪問右子樹

    • 3.訪問根節點

  • 特性

    • 可以利用Post order確定是否為AVL tree

  • Code

3.Pre-Order Traversal(VLR)

廣度優先 (Breadth-first)

1.Level-Order Traversal

  • BST

  • 步驟

    • 1. 從queue加入tree的第一個node

    • 2.從queue清除本層(不管左右子樹)的所有成員

    • 3.從queue加入下一層(不管左右子樹)的所有成員

Last updated