题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
思路:
二叉搜索树的中序遍历是非递减排序的,所以第k小就是中序遍历结果中第k个元素
import java.util.*;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
ArrayList<TreeNode> arr=new ArrayList<TreeNode>();
TreeNode KthNode(TreeNode pRoot, int k)
{
inorder(pRoot);
if(k>=1&&k<=arr.size())
return arr.get(k-1);
else
return null;
}
void inorder(TreeNode tr){
if(tr!=null){
inorder(tr.left);
arr.add(tr);
inorder(tr.right);
}
}
}
二叉搜索树中第K小节点
本文介绍了一种在二叉搜索树中寻找第K小节点的算法。通过中序遍历的方式,可以得到一个非递减排序的节点序列,从而轻松找到第K小的节点。文章提供了一个具体的实现示例。
2655

被折叠的 条评论
为什么被折叠?



