オファーは、二分探索木のk番目のノードを獲得します。

1.トピック

二分探索木を考えると、その中の最初のk小さいノードを検索してください。例えば、(5,3,7,2,4,6,8)と、第3の接続点に係る数値は、4要約です。

出典:安全オファー証明
リンク:https://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a?tpId=13&tqId=11215&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

2.私の問題の解決

2.1前順

  • アレイを横断するために二分探索木は、昇順(ツリーノード値)であり、それは最初のトラバーサル順序でk番号が最初にk少数。
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
    int cnt=0;
    TreeNode * res=NULL;
    void inOrder(TreeNode *root,int k){
        if(!root)return;
        inOrder(root->left,k);
        if(++cnt == k){
            res=root;
            return;
        }
        inOrder(root->right,k);
    }
public:
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        cnt=0;
        inOrder(pRoot,k);
        return res;
    }

    
};

3.誰か他の人の問題解決

4.まとめとリフレクション

公開された70元の記事 ウォンの賞賛0 ビュー2123

おすすめ

転載: blog.csdn.net/weixin_43951240/article/details/104209829