题目:二叉搜索树的第K大节点
举例: 输入二叉搜索树,如图示,第三大的节点是6
思路
中序遍历,然后获取第k个数
public class KthSmallest {
public static void main(String[] args) {
TreeNode root = new TreeNode(3);
TreeNode n1 = new TreeNode(1);
TreeNode n2 = new TreeNode(4);
TreeNode n3 = new TreeNode(2);
root.left =n1;
root.right = n2;
n1.right = n3;
}
public static int kthSmallest(TreeNode root, int k) {
List<Integer> list = new ArrayList<>();
midTraverse(list, root);
return list.get(k - 1);
}
private static void midTraverse(List<Integer> list, TreeNode root) {
if (root == null) {
return;
}
if (root.left != null) {
midTraverse(list, root.left);
}
list.add(root.val);
if (root.right != null) {
midTraverse(list, root.right);
}
}
}