1. 程式人生 > >一顆二叉搜尋樹,找出樹中的第k大節點

一顆二叉搜尋樹,找出樹中的第k大節點

最樸素的想法,中序遍歷就是二叉搜尋樹的遞增序列,那直接寫出整棵樹的中序遍歷即可。

class Solution
{
public:
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        if (!pRoot || k < 0)
            return nullptr; 

        vector<TreeNode*> in_order;
        InOrder(rRoot, inorder);
        if (k > in_order.size())
            return
nullptr; return in_order[k - 1]; } void InOrder(TreeNode* pRoot, vector<TreeNode*>& in_order) { if (pRoot == nullptr) { return; } InOrder(pRoot->left, in_order); in_order.push_back(pRoot); InOrder(pRoot->right, in_order); } };