二叉搜索树的第k个结点(剑指offer)
Posted 无惧风云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉搜索树的第k个结点(剑指offer)相关的知识,希望对你有一定的参考价值。
题目描述
给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9 }; 10 */ 11 class Solution { 12 public: 13 vector<TreeNode*> vet; 14 TreeNode* KthNode(TreeNode* pRoot, int k) 15 { 16 midsearch(pRoot); 17 if (k<1 || k>vet.size()) 18 return NULL; 19 else 20 { 21 return vet[k - 1]; 22 } 23 } 24 void midsearch(TreeNode * root) 25 { 26 27 if (root == NULL) 28 return; 29 if (root != NULL) 30 { 31 midsearch(root->left); 32 vet.push_back(root); 33 midsearch(root->right); 34 } 35 } 36 37 };
以上是关于二叉搜索树的第k个结点(剑指offer)的主要内容,如果未能解决你的问题,请参考以下文章