두 갈래 나무 응용_두 갈래 검색 트리의 K 노드

제목: 두 갈래 검색 트리를 정하고 그 중 k번째로 큰 결점을 찾으세요.예를 들어, 5/\3 7/\/\2 4 6 8에서 세 번째 결점의 값은 결점 수치 크기 순서대로 4입니다.분석: 중차 역행을 진행하면 중차 역행 서열의 수치는 점차적으로 정렬된다.

   /*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
    int number=0;
public:
// , 
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        if(pRoot)
        {
            TreeNode* node=KthNode(pRoot->left,k);
            if(node!=NULL)
                return node;
            ++number;
            if(number==k)
                return pRoot;
            node=KthNode(pRoot->right,k);
            if(node!=NULL)
                return node;
        }
        return NULL;
    }

/*
// , K vec[K-1] ;
    TreeNode* KthNode(TreeNode* pRoot, unsigned int k)
    {
        if(pRoot==NULL||k<=0) return NULL;
        vector*> vec;
        Inorder(pRoot,vec);
        if(k>vec.size())
            return NULL;
        return vec[k-1];
    }
    // , vector 
    void Inorder(TreeNode* pRoot,vector*>& vec)
    {
        if(pRoot==NULL) return;
        Inorder(pRoot->left,vec);
        vec.push_back(pRoot);
        Inorder(pRoot->right,vec);
    } 
  */
};

좋은 웹페이지 즐겨찾기