(C++)剑指offer-62:二叉搜索树的第k个结点(树)(再理解)

剑指offer-62:二叉搜索树的第k个结点

目录

  • 剑指offer-62二叉搜索树的第k个结点
  • 目录
    • 1题目描述
    • 2题目解析
    • 3题目答案

1题目描述

给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
(C++)剑指offer-62:二叉搜索树的第k个结点(树)(再理解)_第1张图片

2题目解析

思路:二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。

所以,按照中序遍历顺序找到第k个结点就是结果。

(C++)剑指offer-62:二叉搜索树的第k个结点(树)(再理解)_第2张图片

3题目答案

没想明白

class Solution {
public:
    int count = 0;  //计数器
    TreeNode* KthNode(TreeNode* pRoot, int k){
        if(pRoot!=NULL){   //中序遍历寻找第k个
            TreeNode *res = KthNode(pRoot->left, k);
            if(res!=NULL) 
                return res;
            if(++count == k) 
                return pRoot;

            res = KthNode(pRoot->right,k);
            if(res!=NULL) 
                return res;
        }
        return NULL;
    }
};

你可能感兴趣的:(剑指offerC++)