题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解题思路
中序遍历二叉搜索树,结果为树中结点从小到大的顺序排列。
一边按照中序遍历二叉搜索树一边记录个数。
AC代码
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
int order = 0;
TreeNode kth = null;
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot == null) return kth;
kthNodeCore(pRoot, k);
return kth;
}
private void kthNodeCore(TreeNode pRoot, int k){
if(pRoot == null) return;
kthNodeCore(pRoot.left, k);
order++;
if(order == k) kth = pRoot;
kthNodeCore(pRoot.right, k);
}
}