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

二叉搜索树的第k个结点

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

有序队列+遍历

 TreeNode KthNode(TreeNode pRoot, int k) {
        PriorityQueue<TreeNode> queue = new PriorityQueue<TreeNode>( new Comparator<TreeNode>() {
            @Override
            public int compare(TreeNode o1, TreeNode o2) {
                if (o1.val < o2.val) return -1;
                else if (o1.val == o2.val) return 0;
                else return 1;
            }
        });
            pr(pRoot, queue);
            TreeNode ans = null;
            for (int i = 0; i < k; i++) {
                ans= queue.poll();
            }
            return ans;
        }

        void pr(TreeNode pRoot, PriorityQueue<TreeNode> queue) {
            if (pRoot == null) return;
        queue.add(pRoot);
        pr(pRoot.left, queue);
        pr(pRoot.right, queue);
    }
全部评论

相关推荐

不懂!!!:感觉你的项目描述太简单了,建议使用star描述法优化提炼一下,就是使用什么技术或方案解决了什么问题,有什么效果或成果,例如:对axios进行了二次封装,实现了请求的统一管理、错误的集中处理以及接口调用的简化,显著提高了开发效率和代码维护性,使用canvas技术实现了路线绘制功能,通过定义路径绘制函数和动态更新机制,满足了简化的导航可视化需求,提升了用户体验。像什么是使用其他组件库,基本功能描述就最好不要写到项目成果里面去了,加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务