一顆二叉搜尋樹,找出樹中的第k大節點
阿新 • • 發佈:2019-02-14
最樸素的想法,中序遍歷就是二叉搜尋樹的遞增序列,那直接寫出整棵樹的中序遍歷即可。
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);
}
};