Đếm số lượng node nhỏ hơn hoặc lớn hơn node cho trước (BST - Binary Search Tree)

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:

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