900. Closest Binary Search Tree Value

匿名 (未验证) 提交于 2019-12-03 00:32:02

描述

Given a non-empty binary search tree and a target value, find the value in the BST that is closest to the target.

  • Given target value is a floating point.
  • You are guaranteed to have only one unique value in the BST that is closest to the target.

样例

{1}4.4285711.

我的第一想法就是先序遍历即可,但是这样做遗漏了最重要的一个条件这是一个二叉搜索树,如果目标比当前节点的值要大,那就没有必要遍历当前节点的左子树了。所以遍历的时候加上筛选条件即可。

/**  * Definition of TreeNode:  * class TreeNode {  * public:  *     int val;  *     TreeNode *left, *right;  *     TreeNode(int val) {  *         this->val = val;  *         this->left = this->right = NULL;  *     }  * }  */  class Solution { public:     /**      * @param root: the given BST      * @param target: the given target      * @return: the value in the BST that is closest to the target      */     int closestValue(TreeNode * root, double target) {         // write your code here         int a=root->val;         TreeNode *t=target<a?root->left:root->right;         if(!t) return a;         int b=closestValue(t,target);         return abs(a-target)<abs(b-target)?a:b;     } };

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!