zoukankan      html  css  js  c++  java
  • [剑指Offer] 62.二叉搜索树的第k个结点

    题目描述

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

    【思路】遍历二叉搜索树,存入一个vector中,对该vector排序,返回第k个结点。

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };
    10 */
    11 class Solution {
    12 public:
    13     vector<TreeNode*> vec;
    14     static bool cmp(TreeNode* p,TreeNode* q)
    15     {
    16         return p->val < q->val;
    17     }
    18     void addVec(TreeNode* pRoot)
    19     {
    20         if(pRoot){
    21             vec.push_back(pRoot);
    22             addVec(pRoot->left);
    23             addVec(pRoot->right);
    24         }
    25     }
    26     TreeNode* KthNode(TreeNode* pRoot, int k)
    27     {
    28         if(pRoot == NULL || k < 1)
    29             return NULL;
    30         addVec(pRoot);
    31         sort(vec.begin(),vec.end(),cmp);
    32         if(k > vec.size())
    33             return NULL;
    34         return vec[k - 1];
    35     }
    36 
    37     
    38 };
  • 相关阅读:
    服务器响应状态码
    30
    29
    Java中参数始终是按值传递
    浅析 Java 中的继承和重写
    25
    super 关键字
    24
    Overriding
    23
  • 原文地址:https://www.cnblogs.com/lca1826/p/6579313.html
Copyright © 2011-2022 走看看