剑指Offer——二叉搜索树的第K个节点
1、题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
2、代码实现
import java.util.ArrayList; public class Solution { TreeNode KthNode(TreeNode pRoot, int k) { ArrayList<TreeNode> list = new ArrayList<>(); if (pRoot == null || k <= 0) { return null; } //使用中序遍历就能使二叉排序树从小到大进行排序 KthNode(pRoot, list); if (k > list.size()) { return null; } return list.get(k - 1); } private void KthNode(TreeNode pRoot, ArrayList<TreeNode> list) { if (pRoot == null) { return; } KthNode(pRoot.left, list); list.add(pRoot); KthNode(pRoot.right, list); } }