`

Google Interview - Kth Smallest Element in BST

 
阅读更多

Given a binary search tree and an integer K, find K-th smallest element in BST.

For example: 
Input:

   2
/ \
1 3

K = 2

Output:
2

Note: Your solution musb be in-place without altering the nodes' values.

 

Solution 1:

in-order递归访问。

TreeNode* kth_smallest(TreeNode* root, int& k) {
    if(!root || k < 0 ) return nullptr;
    TreeNode* left = kth_smallest(root->left, k);
    if(left) return left;
    if(--k == 0) return root;
    return kth_smallest(root->right, k);
}

 

Solution 2:

in-order非递归访问。

TreeNode* kth_smallest(TreeNode* root, int& k) {
    if(!root || k <= 0 ) return nullptr;
    TreeNode* node = root;
    stack<TreeNode *> st;
    while(!st.empty() || node) {
        if(node) {
            st.push(node);
            node = node->left;
        } else {
            TreeNode *p = st.top();
            st.pop();
            if(--k == 0) return p;
            if(p->right) node=p->right;
        }
    }
    return nullptr;
}

 

分享到:
评论

相关推荐

    c语言-leetcode题解之0230-kth-smallest-element-in-a-bst

    c c语言_leetcode题解之0230_kth_smallest_element_in_a_bst

    java-leetcode题解之Kth Smallest Element in a BST.java

    在Java语言实现的LeetCode题解中,"Kth Smallest Element in a BST"这一问题尤为引人注目,它涉及到了二叉树的遍历以及对树的特性进行深度利用。 二叉搜索树具有独特的特性:对于任意节点,其左子树中的所有元素都...

    java-leetcode题解之Kth Smallest Element in a Sorted Matrix.java

    在处理这个问题之前,我们首先需要理解题目“Kth Smallest Element in a Sorted Matrix”的意思。这道题是LeetCode上的算法题目,要求求解在一个按行和列都排好序的矩阵中,找到第k小的元素。此类问题通常涉及到矩阵...

    java-leetcode题解之215-Kth-Largest-Element-in-an-Array

    在这个上下文中,Java leetcode题解之215_Kth_Largest_Element_in_an_Array是一道旨在寻找数组中第k大元素的编程题。 要解决这个问题,我们需要理解算法的核心概念:如何高效地找到一个数组中的第k大元素。一个常见...

    python-leetcode题解之215-Kth-Largest-Element-in-an-Array.py

    在数据分析与算法实现中,常常需要寻找一组数据中的第k大的元素。在Python编程语言中,LeetCode网站提供了一个经典问题“215.数组中的第k个最大元素”,该问题要求使用算法找出一个未排序整数数组中第k大的元素。...

    C++-leetcode题解之668-Kth-Smallest-Number-in-Multiplication-Table

    在解决LeetCode上的668题时,涉及到对乘法表中第k小的数进行寻找。乘法表是由连续的正整数所构成,其中第i行和第j列的数是i*j。题目要求我们找出这样的一个数,它是这个乘法表中按升序排列时的第k个数。...

    378.Kth Smallest Element in a Sorted Matrix有序矩阵中第K小的元素【LeetCode单题讲解系列】

    378.Kth_Smallest_Element_in_a_Sorted_Matrix有序矩阵中第K小的元素【LeetCode单

    703.Kth Largest Element in a Stream数据流中的第K大元素【LeetCode单题讲解系列】

    703.Kth_Largest_Element_in_a_Stream数据流中的第K大元素【LeetCode单题讲解系列】

    the kth smallest elem

    标题 "the kth smallest elem" 暗示我们要讨论的是如何在数组或集合中找到第k小的元素,这是一个常见的算法问题,在计算机科学和数据结构领域具有重要意义。描述中提到的 "Clion" 是一个流行的C/C++集成开发环境,...

    java-leetcode题解之Kth Smallest Number in Multiplication Table.java

    在处理多层嵌套循环生成的乘法表时,寻找第k小的数是一项具有挑战性的任务,需要高效的算法来优化查找性能。乘法表通常是一个矩阵,其行和列代表两个自然数序列的乘积,例如,第一行是1乘以1到n,第二行是2乘以1到n...

    MatLab中用于GPS跟踪的 扩展卡尔曼滤波器实现 EKF-KTH

    在EKF-KTH项目中,"master"分支可能包含了完整的MatLab代码实现,包括了上述所有步骤的函数和脚本。用户可以下载这个压缩包,了解和学习如何在实际项目中应用EKF进行GPS跟踪。源码通常会包含详细的注释,帮助理解每...

    lrucacheleetcode-Coding-Interview:编程面试

    lru cache leetcode Coding-Interview A repo for popular coding interview ...In ...In ...In ...二叉树查找/BST查找 Closest Binary Search Tree Value 二叉树查找/二叉树第K个 Kth Smallest Element In A

    ll-kth-from-end

    标题“ll-kth-from-end”通常指的是在链表数据结构中找到距离末尾指定位置的节点。这是一个常见的编程问题,特别是在面试和算法练习中。在本文中,我们将深入探讨链表的基本概念,如何解决此类问题,以及实现细节。 ...

    QuickSelect算法

    this function returns kth smallest element in arr[l...r],using quicksort based method. without sorting all the elements in the list

    KTH-TIPS 纹理材质数据.zip

    《KTH-TIPS纹理材质数据集详解》 纹理和材质是计算机图形学中不可或缺的元素,它们赋予虚拟世界中的物体以真实感和视觉吸引力。KTH-TIPS纹理材质数据集,作为一个广泛使用的资源库,为研究者和开发者提供了丰富的...

    kth-tips灰度纹理数据集

    **KTH-TIPS灰度纹理数据集详解** KTH-TIPS(KTH-Texas Institute of Photography and Shape)是一个广泛使用的图像数据库,特别是针对纹理分析和图像分类任务。这个数据集包含了大量的灰度纹理图像,是计算机视觉...

    纹理图像分类数据集KTH-TIPS

    纹理图像分类数据集,KTH-TIPS数据集,包含orange-peel、bread等10类纹理图像

    Coding Interview In Java

    8 Kth Largest Element in an Array 35 9 Wildcard Matching 37 10 Regular Expression Matching in Java 39 11 Merge Intervals 43 12 Insert Interval 45 13 Two Sum 47 14 Two Sum II Input array is sorted 49 ...

    Select-the-Kth-number-by-3-methods.zip_数值算法/人工智能_Visual_C++_

    本资料包“Select-the-Kth-number-by-3-methods.zip”聚焦于在一组随机生成的数中找到第K个最小(或最大)的数,提供了三种不同的实现方法:简单选择排序、冒泡排序和快速排序。接下来,我们将详细讨论这三种排序...

    傅里叶变换动图matlab代码-KTH_Simson_changes:对KTH流量求解器Simson的修改

    在这个名为"KTH_Simson_changes:对KTH流量求解器Simson的修改"的项目中,我们可以推测其主要目标是使用MATLAB编程语言实现傅里叶变换的动态可视化,同时可能针对KTH(瑞典皇家理工学院)的Simson流体动力学求解器...

Global site tag (gtag.js) - Google Analytics