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<>();
    }
  • 相关阅读:
    OKHttp的使用
    多点触控
    事件分发机制的理解
    Activity的四种启动模式
    反射动态建表
    px,dp,sp三者的转换
    动态广播和静态广播的区别
    字符串转日期格式
    hive Metastore contains multiple versions
    记一次 qW3xT.4,解决挖矿病毒。
  • 原文地址:https://www.cnblogs.com/silentteller/p/12118658.html
Copyright © 2011-2022 走看看