题目描述
给定一棵二叉搜索树(对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值。),请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
思想:通过中序遍历,把值存入list中,然后取出第k-1个。
import java.util.ArrayList;
public class Solution {
ArrayList<TreeNode> arr = new ArrayList<TreeNode>();
TreeNode KthNode(TreeNode pRoot, int k)
{
middleOrder(pRoot);
if(arr.size()<1||k<1||k>arr.size()) {
return null;
}
return arr.get(k-1);
}
public void middleOrder(TreeNode pRoot) {
if(pRoot!=null) {
middleOrder(pRoot.left);
arr.add(pRoot);
middleOrder(pRoot.right);
}
}