Anh chị cho em hỏi có cách làm tính tổng được các giá trị của nút trong 1 lần diệt , mà không cần phải lưu các nút của cây vào ( như danh sách liên kết ) để tính tổng không ạ ?
Tính tổng trong 1 lần duyệt cây nhị phân
Dùng giải thuật Depth First Search hoặc Breadth First Search. Theo mình thì dùng cái thứ nhất dễ hơn.
Bạn học cây Nhị Phân chắc cũng biết 2 cái giải thuật này nhỉ ?
mình đã thử 2 cách rồi , nhưng không ra
Bạn post code lên đi, có thể code của bạn gặp vấn đề gì chăng ?
int sumTree(BstNode *root) {
int result = 0;
if (root == NULL)
return 0;
else {
result += root->data;
sumTree(root->left);
sumTree(root->right);
};
return result;
}
Code của mình
sumTree của left right bạn phải cộng vào result nữa chứ
1 Like
em cảm ơn anh , em hiểu ra vấn đề rồi
À, thì ra phương thức của bạn dùng đệ quy
Phương thức này gập 1 vấn đề là: giả sử mình bắt đầu gọi đệ quy với tham số là root thì kết quả trả về là data của root thôi còn hàm: [quote=“Khang_Viet, post:5, topic:37411”]
sumTree(root->left);
sumTree(root->right);
[/quote]
2 phương thức trên bạn gọi nhưng không lấy giá trị trả về của chúng thì sao cộng tiếp được
1 Like