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