题目
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。
知识点
二叉树,前序遍历
思路
已知是二叉搜索树,所以有特征左结点>根结点>右结点,所以从最左下开始数字依次增大;根据前序遍历统计次数,可以得到第k小的TreeNode结点。
代码
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
TreeNode node ;
int count;
TreeNode KthNode(TreeNode pRoot, int k)
{
count = k;
Find(pRoot);
return node;
}
void Find(TreeNode pRoot){
if(node!=null||count<=0||pRoot==null) return;
Find(pRoot.left);
count--;
if(count==0&&node==null){
node = pRoot;
}
Find(pRoot.right);
}
}