void traverse(Node* root)
{
queue<Node*> q;
Node* temp_node= root;
while(temp_node)
{
cout<<temp_node->value<<endl;
if(temp_node->left)
q.push(temp_node->left);
if(temp_node->right)
q.push(temp_node->right);
if(!q.empty())
{
temp_node = q.front();
q.pop();
}
else
temp_node = NULL;
}
}
Mã được đăng ở trên là mã truyền tải đơn hàng cấp của tôi. Mã này hoạt động tốt cho tôi nhưng Một điều tôi không thích là tôi đang khởi tạo rõ ràng temp_node = NULL
hoặc tôi sử dụng lệnh ngắt. Nhưng nó không có vẻ là một mã tốt cho tôi.Thứ tự Traversal của cây nhị phân
Có triển khai gọn gàng hơn điều này hay làm cách nào để tôi có thể làm cho mã này tốt hơn?
Indent với tab cho tính nhất quán. – Potatoswatter
Ồ, nó cũng thường không được gọi là 'cấp bậc'. Nó thường được gọi là 'bề rộng đầu tiên' như trái ngược với 'chiều sâu đầu tiên'. – Omnifarious
@Omnifarious IMHO, 'cấp bậc' là rõ ràng hơn và ngắn gọn hơn so với thuật ngữ 'tìm kiếm đầu tiên' (BFS). Chỉ cần đi theo cấp độ trong khi đi ngang qua. Đơn giản như nó âm thanh! – RBT