题解 | #二叉搜索树的第k个节点#
二叉搜索树的第k个节点
https://www.nowcoder.com/practice/57aa0bab91884a10b5136ca2c087f8ff
二叉搜索树的第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; }#二叉搜索树的第k个节点#
剑指offer 文章被收录于专栏
剑指offer专栏主要分享剑指offer题解。