二叉搜索树查找与目标数字最接近的节点。
typedef struct TreeNode{ int value; struct TreeNode * left; struct TreeNode * right; }Node; Node* LeftPrev = NULL; Node* RightPrev = NULL; Node* GetNearestNode(Node* root, int k) { if(NULL == root) { return NULL; } if(k == root->value) { return root; } if(k < root->value) { LeftPrev = root; if(NULL != root->left) { return GetNearestNode(root->left , k); } else { if(RightPrev != NULL && k - RightPrev->value < root->value - k) { return RightPrev; } else { return root; } } } else { RightPrev = root; if(NULL != root->right) { return GetNearestNode(root->right , k); } else { if(LeftPrev != NULL && k - root->value < LeftPrev->value - k) { return root; } else { return LeftPrev; } } } }