思路:由于二叉搜索树中序遍历后的序列是从小到大排列的,那么我们可以通过将整个二叉树按照中序遍历出来存储在一个List集合中,那么第K-1个树就是我们要寻找的节点。
using System.Collections.Generic;
/*给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。*/
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}*/
class Solution
{
List<TreeNode> list=new List<TreeNode>();
public TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot==null || k<=0) return null;
InOrder(pRoot);
if(k>list.Count) return null;
return list[k-1];
}
public void InOrder(TreeNode root)
{
if(root!=null)
{
InOrder(root.left);
list.Add(root);
InOrder(root.right);
}
else
{
return;
}
}
}