zoukankan      html  css  js  c++  java
  • [Locked] Closest Binary Search Tree Value & Closest Binary Search Tree Value II

    Closest Binary Search Tree Value 

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

    Note:

    • 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.

    分析:

       按照正常的搜索路径,直到搜索到叶节点,选出在这个路径上离target最近的值返回

    代码:

    void dfs(TreeNode *cur, int &cv, double target) {
        if(!cur)
            return;
        double num = double(cur->val) - target;
        if(abs(num) < abs(double(cv) - target))
            cv = cur->val;
        if(num > 0)
            dfs(cur->left, cv, target);
        else
            dfs(cur->right, cv, target);
        return;
    }

    Closest Binary Search Tree Value II

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

    Note:

    • Given target value is a floating point.
    • You may assume k is always valid, that is: k ≤ total nodes.
    • You are guaranteed to have only one unique set of k values in the BST that are closest to the target.

    Follow up:
    Assume that the BST is balanced, could you solve it in less than O(n) runtime (where n = total nodes)?

    Hint:

      1. Consider implement these two helper functions:
        1. getPredecessor(N), which returns the next smaller node to N.
        2. getSuccessor(N), which returns the next larger node to N.
      2. Try to assume that each node has a parent pointer, it makes the problem much easier.
      3. Without parent pointer we just need to keep track of the path from the root to the current node using a stack.
      4. You would need two stacks to track the path in finding predecessor and successor node separately.
  • 相关阅读:
    SpringMVC集成Swagger插件以及Swagger注解的简单使用
    Java后台直接生成二维码介绍
    Java条形码生成技术-Barcode4j
    对Java Serializable(序列化)的理解和总结(一)
    java下划线与驼峰命名互转
    Mybatis实战之TypeHandler高级进阶
    迪卡侬女主(视频) 第一集
    MySQL优化(五)
    PDO连接mysql和pgsql数据库
    MySQL的FIND_IN_SET()函数
  • 原文地址:https://www.cnblogs.com/littletail/p/5216502.html
Copyright © 2011-2022 走看看