二叉搜索树的第K个节点
1.题目:
给定一棵二叉搜索树,请找出其中的第k小的结点。
输入 {5,3,7,2,4,6,8},3 返回值 {4} 说明 按结点数值大小顺序第三小结点的值为4
2.思路:
本题最关键的在于是一颗搜索二叉树,那么中序遍历的输出结果就是一个递增的数组!!!!!!
import java.util.ArrayList; public class Solution { ArrayList<TreeNode> arr=new ArrayList<>();//用一个自动扩容的数组存放遍历输出 TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot==null){//判空 return null; } inOrder(pRoot);//中序遍历 if(k<1||k>arr.size()){//超出数组界限的k return null; } return arr.get(k-1); } private void inOrder(TreeNode root){ if(root.left!=null){ inOrder(root.left); } arr.add(root); if(root.right!=null){ inOrder(root.right); } } }