zoukankan      html  css  js  c++  java
  • 剑指offer-二叉搜索树的第k个结点

    题目描述

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

    解题思路

    二叉搜索树按照从小到大顺序输出的话正好是左子节点->根结点->右子节点这样的顺序,所以找到第k大的结点就是对二叉搜索树进行中序遍历,从第一个遍历到的节点开始计数,直到遍历到第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     int k1=0;
    14     TreeNode* KthNode(TreeNode* pRoot, int k)
    15     {
    16         if(!pRoot)
    17             return NULL;
    18         TreeNode *res=NULL;
    19         if(pRoot->left)
    20             res=KthNode(pRoot->left,k);
    21         k1++;
    22         if(k1==k)
    23             return pRoot;
    24         if(res==NULL&&pRoot->right)
    25             res=KthNode(pRoot->right,k);
    26         return res;
    27     }
    28 };
  • 相关阅读:
    arcgis server adf java
    JBoss4.2.3下载地址
    关心
    [转载]通过Arcgis Server向MXD中添加图层
    arcgis server问题总结
    想和做
    无敌
    [转载]通过Arcgis Server将某一图层从MXD中…
    Error retrieving "feature.xml".
    360很强大
  • 原文地址:https://www.cnblogs.com/wmx24/p/8807024.html
Copyright © 2011-2022 走看看