[剑指offer]------63 二叉搜索树的第k个结点
程序员文章站
2022-07-10 20:14:54
...
-
温馨 小提示:如果代码看不懂,不妨拿出纸和笔,找几个例子,多走几遍程序,
再搜索一下相关的博客,慢慢的就加深理解了。
题目:
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。
代码思路:
因为二叉搜索树按照中序遍历的顺序打印出来就是排好序的,所以,我们按照中序遍历找到第k个结点就是题目所求的结点。
解题代码:
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
int index = 0;
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot != null){
TreeNode node = KthNode(pRoot.left, k);
if(node != null)
return node;
index ++;
if(index == k)
return pRoot;
node = KthNode(pRoot.right, k);
if(node != null)
return node;
}
return null;
}
}
参考文章:
https://www.weiweiblog.cn/kthnode/