给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
2024-09-07 21:08:08
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{ //中序递归
int count = 0;
if(count > k || pRoot == NULL)
return NULL;
TreeNode* p = pRoot;
stack<TreeNode*> LDRStack;
TreeNode* kthNode;
while(p != NULL || !LDRStack.empty()){
while(p != NULL){
LDRStack.push(p);
p = p->left;
}
TreeNode* node = LDRStack.top();
LDRStack.pop();
count++;
if(count == k){
kthNode = node;
}
p = node->right;
}
return kthNode;
} };
最新文章
- Android Studio 运行出现 Error:Execution failed for task &#39;:app:transformResourcesWithMergeJavaResForDebug&#39;.
- Redis在Windows下的安装和使用
- python核心编程学习记录之序列(字符串元组列表)
- HighChats报表使用C#mvc导出本地图片
- 双心ping GUI工具1.0
- windows server 2008 R2 远程连接用户数修改
- Oracle数据文件管理
- 基于局部敏感哈希的协同过滤推荐算法之E^2LSH
- tomcat根据繁忙线程数对keepalive进行动态调整
- STM32库函数实现方法
- valgrind 的使用及错误信息分析
- subTree
- 实用收藏Linux命令备忘
- vue &; iview
- 用ethtool 命令解决Linux 网卡丢包【转】
- 学习angularjs的内置API函数
- TensorFlow.js之根据数据拟合曲线
- Java基础——可变参数
- SLAM(一)----学习资料整理
- McAfee 与 360使用感受