二叉搜索树的第k个节点:最直观的想法是,中序遍历二叉搜索树,这样得到的遍历结果是有序的,使用一个变量num表示当前距离第k个节点还剩几个节点,其初始为k,使用一个变量value表示第k个节点值,其初始为-1。在中序遍历的过程中,将num减一,并且判断当前num是否等于0,如果是则返回当前节点对应的值,即value等于cur->val,最后返回value即可。
int num=0;
int value=-1;
void InOrder(TreeNode* cur)
{
// 空节点返回
if(cur==nullptr)
return;
InOrder(cur->left);
// 中间节点
num--;
if(num==0)
value=cur->val;
InOrder(cur->right);
}
int KthNode(TreeNode* proot, int k) {
num=k;
InOrder(proot);
return value;
}



京公网安备 11010502036488号