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

劍指offer——二叉搜尋樹的第k個結點

概述

題目描述 給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4。

C++ AC程式碼

#include <iostream>
using namespace std;


struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};

class
Solution { private: int cnt; TreeNode* ans; public: void Inorder(TreeNode* root){ if(cnt == 0){ return; } if(!root){ return; } this->Inorder(root->left); cnt--; if
(cnt != 0){ ans = root; } this->Inorder(root->right); } TreeNode* KthNode(TreeNode* pRoot, int k){ if(!pRoot || k < 1){ return NULL; } cnt = k; ans = NULL; this
->Inorder(pRoot); return ans; } };