【编程题】二插搜索树的第k个节点(java实现)
题目来源
题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
题目解答
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 {
TreeNode KthNode(TreeNode pRoot, int k)
{
if(pRoot==null||k==0)
return null;
Stack<TreeNode>stack=new Stack<>();
while(pRoot!=null||!stack.isEmpty()){
while(pRoot!=null){
stack.add(pRoot);
pRoot=pRoot.left;
}
if(!stack.isEmpty())
pRoot=stack.pop();
if(--k==0)return pRoot;
pRoot=pRoot.right;
}
return null;
}
}