zoukankan      html  css  js  c++  java
  • 剑指Offer-62.二叉搜索树的第k个结点(C++/Java)

    题目:

    给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)    中,按结点数值大小顺序第三小结点的值为4。

    分析:

    二叉搜索树的中序遍历结果正好是按数值升序排列的结果,我们可以利用前序遍历将结点按val值的顺序存储到数组中,然后直接按索引返回即可。

    程序:

    C++

    class Solution {
    public:
        TreeNode* KthNode(TreeNode* pRoot, int k)
        {
            if(pRoot == nullptr)
                return pRoot;
            helper(pRoot);
            if(k > res.size() || k < 1)
                return nullptr;
            return res[k-1];
        }
        void helper(TreeNode* pRoot){
            if(pRoot == nullptr)
                return;
            helper(pRoot->left);
            res.push_back(pRoot);
            helper(pRoot->right);
        }
    private:
        vector<TreeNode*> res;
    };

    Java

    import java.util.*;
    public class Solution {
        TreeNode KthNode(TreeNode pRoot, int k)
        {
            if(pRoot == null)
                return pRoot;
            helper(pRoot);
            if(k < 1 || k > list.size())
                return null;
            return list.get(k-1);
        }
        void helper(TreeNode pRoot){
            if(pRoot == null)
                return;
            helper(pRoot.left);
            list.add(pRoot);
            helper(pRoot.right);
        }
    private ArrayList<TreeNode> list = new ArrayList<>();
    }
  • 相关阅读:
    PHP中的NULL类型
    js中自定义事件,使用了jQuery
    chrome调试文章
    codeforces 633D
    hdu 1496 Equations
    poj 1286 Necklace of Beads
    poj 2154 Color
    poj 3270 Cow Sorting
    poj 1026 Cipher
    poj 2369 Permutations
  • 原文地址:https://www.cnblogs.com/silentteller/p/12118658.html
Copyright © 2011-2022 走看看