题目描述
给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
代码实现
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if(pRoot == nullptr || k < 0)
return nullptr;
stack<TreeNode*> s;
TreeNode *node = pRoot;
while(node != nullptr || !s.empty()){
if(node){
s.push(node);
node = node->left;
}
else{
node = s.top();
s.pop();
k--;
if(k == 0)
return node;
node = node->right;
}
}
return nullptr;
}
};
“`