Tôi đã đọc một số bài viết khác ở đây trông tương tự, nhưng không hoàn toàn trả lời được sự cố của tôi. Tôi đã được đưa ra một câu hỏi cho một nhiệm vụ gán tất cả các nút trong một cây nhị phân độ sâu tương ứng của nó. Tôi không thể hiểu được.Chỉ định độ sâu cho mỗi nút
Để tham khảo này là mã của tôi:
struct treeNode {
int item;
int depth;
treeNode *left;
treeNode *right;
};
typedef treeNode *Tree;
int assignDepth(Tree &T, int depth)
{
if(T!=NULL)
{
depth = assignDepth(T->left, depth++);
T->depth = depth;
depth = assignDepth(T->right, depth++);
}
else //leaf
return depth--;
}
Tôi đã cố gắng chạy nó thông qua với bút và giấy và nó trông OK, nhưng bàn của tôi kỹ năng kiểm tra đang thiếu rõ ràng.
Bất kỳ ai cũng có thể chỉ cho tôi đúng hướng không? Đây là lần đầu tiên tôi sử dụng cây, và đệ quy không phải là điểm mạnh của tôi.
Trả lời:
void treecoords(Tree &T, int depth)
{
static int count = -1; //set to -1 so the precrement before assignment doesn't give the wrong values
if(T!=NULL)
{
treecoords(T->left, depth+1); //depth decrements automatically once this function call is removed from the stack
count++;
T->x = count;
T->y = depth;
treecoords(T->right, depth+1);
}
}
Cảm ơn mọi người đã trả lời bài đăng của tôi. Tôi hiểu bây giờ tôi đã nghĩ về nó. Tôi sẽ đi và cố gắng sửa mã cho những gì bạn đã nói với tôi và đăng kết quả cuối cùng của tôi. Tôi không muốn chỉ sử dụng mã someones mà không hoàn toàn hiểu nó (mặc dù tôi đánh giá cao rằng bạn đã đăng nó cho tôi, cảm ơn). – xyzjace
Nó hoạt động! Tôi đã thực hiện một thuật toán đệ quy mà kết thúc lên phù hợp với ông Cooper. Nó thực sự là một phần của một thuật toán lớn hơn gán tọa độ x và y cho các nút cây. Thuật toán là trong câu hỏi ban đầu ngay bây giờ. – xyzjace