Tính tổng của cây nhị phân tìm kiếm có điều kiện và không có điều kiện

Hi Anh/Chị !
Em mới học về cây nhị phân tìm kiếm, em muốn hỏi về vấn đề tìm tổng khi có đk và không có điều kiện.

Khi không có điều kiện, em viết như vậy :

    int Sum(TREE t)
    {
    	if (t == NULL)
    		return 0;
    	int a = Sum(t->left);
    	int b = Sum(t->right);
    	return a + b + t->element;
    }

Khi có điều kiện như là tổng của các node > 0 và <2018
Em viết như thế này :

int Sum(TREE t)
{
	if (t == NULL)
		return 0;
	int a = Sum(t->left);
	int b = Sum(t->right);
    if(t->element < 2018 && t->element > 0)
	return a + b + t->element;
 }

Thì sai ạ, Mà nếu em thêm dòng return a+b vào cuối thì đúng ạ.

    int Sum(TREE t)
    {
    	if (t == NULL)
    		return 0;
    	int a = Sum(t->left);
    	int b = Sum(t->right);
    if(t->element < 2018 && t->element > 0)
    	return a + b + t->element;
    	return a + b;
     }

Vậy nếu t->element không thỏa thì bạn return gì :smiley: VS sẽ warn “not all code paths return a value”.

2 Likes

Em biết nó return ra giá trị rác mà thường các giá trị rác có giá trị âm -xxxxxxxxxxxx. Mà lần này em thấy nó ra gía trị rác lớn hơn 0 nên em không biết có lỗi gì không ạ :smile:

Khi đã gọi là giá trị rác thì rác nào cũng là rác.

1 Like

Dạ, em cảm ơn ạ . :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?