Em chào mn ạ, thầy có giao làm bài tập về nhà làm BST
Thì có 2 câu là đếm số lượng node nhỏ hơn ( hoặc lớn hơn) node cho trước gồm hai hàm int CountLess(NODE *p_root, int x) và int CountGreater(NODE *p_root, int x)
Em code như thế này nhưng nó lại ra sai TT^TT vẫn k hiểu được lí do
Mảng a gồm 10 phần tử như sau [0,8,3,10,1,6,14,4,7,13]
struct NODE{
int key;
NODE* p_left;
NODE* p_right;
};
int CountLess(NODE* p_root, int x)
{
//
/*if (p_root == NULL) return 0;
if (p_root->key < x)
return 1 + CountLess(p_root->p_left, x);
else
return CountLess(p_root->p_left, x);*/
if (p_root == NULL) {
return 0;
}
int countingRight = CountLess(p_root->p_right, x);
int countingLeft = CountLess(p_root->p_left, x);
if (x > p_root->key) {
return (countingLeft + countingRight + 1);
}
else {
return (countingLeft + countingRight);
}
}
int CountGreater(NODE* p_root, int x)
{
if (p_root == NULL)
return 0;
int c_left = CountGreater(p_root->p_left, x);
int c_right = CountGreater(p_root->p_right, x);
if (p_root->key > x) {
return (c_left + c_right + 1);
}
else {
return (c_left + c_right);
}
}
Kết quả nó lại ra ntn: