1. 程式人生 > >二叉搜索樹的第k個結點(劍指offer)

二叉搜索樹的第k個結點(劍指offer)

blog 劍指offer tle ret vector bject tor sub oot

題目描述

給定一顆二叉搜索樹,請找出其中的第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)