/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int nums[1];
struct TreeNode* Traversing(struct TreeNode* root, int *returnSize, int k)
{
if(!root)
return NULL;
root->right = Traversing(root->right, returnSize, k);
if(k==++(*returnSize)){
nums[0] = root->val;
}
root->left = Traversing(root->left, returnSize, k);
return root;
}
int kthLargest(struct TreeNode* root, int k){
int returnSize = 0;
nums[0] = NULL;
struct TreeNode* p = Traversing(root, &returnSize, k);
return nums[0];
}
给定一棵二叉搜索树,找出其中第k大的节点。
最新推荐文章于 2021-11-20 11:14:59 发布
该博客介绍了如何通过中序遍历找到二叉树中第k个最大的元素。提供的C++代码实现了一个名为`Traversing`的函数,它首先遍历右子树,接着检查当前节点是否为第k个最大值,最后遍历左子树。`kthLargest`函数调用`Traversing`并返回结果。这种方法有效地利用了二叉树的性质来解决问题。
802

被折叠的 条评论
为什么被折叠?



