zoukankan      html  css  js  c++  java
  • LeetCode 230. 二叉搜索树中第K小的元素 (平衡树)

    题目

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。

    说明:
    你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。

    示例 1:

    输入: root = [3,1,4,null,2], k = 1

       3
      / 
     1   4
      
       2
    

    输出: 1
    示例 2:

    输入: root = [5,3,6,2,4,null,null,1], k = 3

           5
          / 
         3   6
        / 
       2   4
      /
     1
    

    输出: 3
    进阶:
    如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmallest 函数?

    题解

    第一次写LeetCode, 还不太会用。

    public里在定义一个函数递归中序遍历, 记录答案, 找到的时候return就可以了。

    不要吐槽变量名

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
     public:
      int index = 0, final_attack_ride;
      void Solve(TreeNode* root, const int &k) {
        if (root->left) {
          Solve(root->left, k);
        }
        if (index >= k) return;
        if (++index == k) {
          final_attack_ride = root->val;
          return;
        }
        if (root->right) {
          Solve(root->right, k);
        }
      }
      int kthSmallest(TreeNode* root, int k) {
        Solve(root, k);
        return final_attack_ride;
      }
    };
    
  • 相关阅读:
    Java-集合类源码List篇(二)
    规范输入
    Java 构造方法
    c语言函数实现交换两个数的值
    2015北京宇信易诚科技面试题
    Java中的访问控制
    2015大连华信校园招聘面试题--堆栈
    2015大连华信面试题OSI七层模型
    2015大连华信面试题二叉树、遍历
    2015大连华信面试题MVC框架
  • 原文地址:https://www.cnblogs.com/forth/p/9780758.html
Copyright © 2011-2022 走看看