【62】二叉搜索树的第k个结点
参与人数:2376时间限制:1秒空间限制:32768K
题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点。 例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。 牛客网题目链接:点击这里
VS2010代码:
#include<iostream>
#include<vector>
using namespace std;
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(
int x) :
val(x), left(NULL), right(NULL) {
}
};
class Solution {
vector<TreeNode*> nums;
void DFS(TreeNode* p)
{
if(!p)
{
return;
}
else
{
DFS(p->left);
nums.push_back(p);
DFS(p->right);
}
}
public:
TreeNode* KthNode(TreeNode* pRoot,
unsigned int k)
{
if(!pRoot)
return NULL;
int n=
0;
DFS(pRoot);
if(k<=nums.size() && k!=
0)
return nums[k-
1];
else
return NULL;
}
};
///方法二:找到即返回
可设置一个计数器,而不用容器存储,找到即返回。
牛客网通过图片:
转载请注明原文地址: https://ju.6miu.com/read-1297069.html