Descripción Título
dado un árbol binario de búsqueda, encontrar el k-th nodos más pequeños en el mismo. Por ejemplo, (5,3,7,2,4,6,8), los valores numéricos de acuerdo con la tercera punto de unión es 4 resumen.
Solución: En traversal fin, considerar k <= 0 y donde k es mayor que el número total de nodos
class Solution {
int cnt = 0;
TreeNode * knode = NULL;
public:
void DFS(TreeNode* pRoot, int k)
{
if (pRoot->left && cnt<k)
DFS(pRoot->left, k);
if (++cnt == k)
knode = pRoot;
if (pRoot->right && cnt<k)
DFS(pRoot->right, k);
}
TreeNode* KthNode(TreeNode* pRoot, int k)
{
if (pRoot==NULL || k <= 0)
return NULL;
DFS(pRoot, k);
return knode;
}
};