题目描述
给定一颗二叉搜索树,请找出其中的第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 };