题解 | #二叉搜索树的第k个结点#

二叉搜索树的第k个结点

http://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a

代码思路:因为二叉搜索树的中序遍历是升序的,因此采用中序遍历,遍历结果用ist保存
根据第k小,可取list.get(k-1);
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;
        return Inorder(pRoot,k);
    }
     public TreeNode Inorder(TreeNode root, int k)
     {
         List<TreeNode> list = new ArrayList<TreeNode>();
         Stack<TreeNode> stack = new Stack<TreeNode>();
         TreeNode node = null;
         while(root!=null || !stack.isEmpty())
         {
             while(root != null)
             {
                 stack.push(root);
                 root = root.left;
             }
             if(!stack.isEmpty())
             {
                 root = stack.pop();
                 list.add(root);
                 root = root.right;
             }
         }
         return k <= list.size() ? list.get(k-1) : null;
     }
}


全部评论

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务