1、題目描述:給定一棵二叉搜索樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4。
2、思路:二叉搜索樹中序遍歷的結果就是數值按照遞增進行排序。因此只需要對二叉搜索樹進行中序遍歷,然后取出第k-1個數即可。
3、代碼:
import java.util.ArrayList; import java.util.List; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { List<TreeNode> resultList=new ArrayList<>(); TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot==null){ return null; } interTransform(pRoot); if(k<=resultList.size() && k>=1){ return resultList.get(k - 1); } return null; } public void interTransform(TreeNode pRoot){ //左根右 if(pRoot.left!=null){ interTransform(pRoot.left); } resultList.add(pRoot); if(pRoot.right!=null){ interTransform(pRoot.right); } } }