• 剑指offer之【二叉搜索树的第k个节点】


    题目:

      二叉搜索树的第k个结点

    链接:

      https://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a?tpId=13&tqId=11215&rp=3&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tPage=4

    题目描述:

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

    思路:

      二叉搜索树,有规律,左子树的节点比根节点小,右子树的结点比根节点大,所以使用中序遍历可一个找到第k个节点

    代码:

      

     1 /*************************************************************************
     2     > File Name: jz63.cpp
     3     > Author: wangshujing 
     4     > Mail: wangshujing@163.com
     5     > Created Time: 2017年06月08日 星期四 11时01分05秒
     6  ************************************************************************/
     7 // 剑指offer 第 63 题:二叉搜索树的第k个节点
     8 #include<iostream>
     9 using namespace std;
    10 
    11 
    12 /*
    13 struct TreeNode {
    14     int val;
    15     struct TreeNode *left;
    16     struct TreeNode *right;
    17     TreeNode(int x) :
    18             val(x), left(NULL), right(NULL) {
    19     }
    20 };
    21 */
    22 
    23 
    24 class Solution{
    25 public:
    26     TreeNode* KthNode (TreeNode* pRoot, int k){
    27         if(pRoot == nullptr || k <=0){
    28             return nullptr;
    29         }
    30         if(!s){
    31             MS(pRoot,k);
    32         }
    33         if(s>=k){
    34             return res;
    35         }
    36         return nullptr;
    37     }
    38     void MS(TreeNode* root, int &k){
    39         if(root == nullptr){
    40             return;
    41         }
    42         MS(root->left,k);
    43         ++s;
    44         if(s==k){
    45             res = root;
    46         }
    47         if(s>k){
    48             return;
    49         }
    50         MS(root->right,k);
    51     }
    52 private:
    53     int s = 0;
    54     TreeNode *res = nullptr;
    55 };
  • 相关阅读:
    基于深度学习的目标检测
    Redmine发送邮件
    用7次比较完成5个元素的排序
    在GEM5模拟器运行时,对Kill命令的使用
    GDB中的backtrace命令
    [译]如何定义python源文件的文件编码
    QEMU ELF_LOAER分析[基于MIPS]
    if语句的数据驱动优化(Java版)
    解决idea中Activiti的bpmn编辑器的中文乱码问题
    最简易的PHP Storm调试模式开启方式
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6961940.html
Copyright © 2020-2023  润新知