二叉搜索树,某节点的左子树一定比他小,右子树一定比他大。
若想找到第n小的数,首先我们想到的是将此二叉搜索树进行排序。
排序的方法:只需中序遍历即可。
import java.util.*;
public class Solution {
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot==null || k<=0){
return null;
}
//中序遍历
ArrayList<TreeNode> treeNodes = new ArrayList<>();
inOrder(pRoot,treeNodes);
//找第k个元素
if(treeNodes.size()<k){
return null;
}
return treeNodes.get(k-1);
}
public void inOrder(TreeNode node,ArrayList<TreeNode> treeNodes){
if(node == null){
return;
}
inOrder(node.left,treeNodes);
treeNodes.add(node);
inOrder(node.right,treeNodes);
}
}