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<>();
    }
  • 相关阅读:
    仿windows的嵌入式GUI系统(一)
    入群必看内容。
    嵌入式开发入门(2)
    仿windows消息机制的嵌入式GUI系统(二)(未完)
    使用硬件定时器软模拟多个定时器(8.15改进版)
    Python 文件目录操作
    C/C++ cast
    C/C++ basic
    C/C++ debug
    C++ 引用返回值
  • 原文地址:https://www.cnblogs.com/silentteller/p/12118658.html
Copyright © 2011-2022 走看看