62.二叉搜索树的第k个结点
题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
题目解答
/* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { int count=0; TreeNode KthNode(TreeNode pRoot, int k) { //递归终止条件 if(pRoot==null){ return null; } //左子树中找符合要求的节点 TreeNode node=KthNode(pRoot.left,k); if(node!=null) return node; //根 if(++count==k) return pRoot; //右子树中找符合要求的节点 node=KthNode(pRoot.right,k); if(node!=null) return node; return null; } }
二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。按照中序遍历顺序找到第k个结点即可。

浙公网安备 33010602011771号