first rb tree impl