废话就不多说了,开始。。。
在二叉搜索树中找最小的大于某个key值的节点
如
8
/ \
6 12
/ / \
2 11 14
key = 8 返回11
key = 1 返回2
key = 16 返回NULL
struct TreeNode { int val; TreeNode* left; TreeNode* right; }; // 迭代实现 TreeNode * FindCeiling(TreeNode *root, int key) { TreeNode * ceiling = NULL; TreeNode * current = root; while(current) { if(current->val <= key) current = current->left; else { ceiling = current; current = current->right; } } return ceiling; } // 递归实现 TreeNode * FindCeiling(TreeNode *root, int key) { if(root == NULL) return NULL; if(root->val <= key) return FindCeiling(root->right, key); else { TreeNode *ceiling = FindCeiling(root->left, key); return ceiling ? ceiling : root; } }
文章结束给大家分享下程序员的一些笑话语录: 人工智能今天的发展水平:8乘8的国际象棋盘其实是一个体现思维与创意的强大媒介。象棋里蕴含了天文数字般的变化。卡斯帕罗夫指出,国际象棋的合法棋步共有1040。在棋局里每算度八步棋,里面蕴含的变化就已经超过银河系里的繁星总数。而地球上很少有任何数量达到这个级别。在金融危机之前,全世界的财富总和大约是1014人民币,而地球人口只有1010。棋盘上,所有可能的棋局总数达到10120,这超过了宇宙里所有原子的总数!经典语录网