题解 | #二叉搜索树的第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);
    }
全部评论

相关推荐

抱抱碍事梨a:三点建议,第一点是建议再做一个项目,把自我介绍部分顶了,第二点是中南大学加黑加粗,第三点是建议加v详细交流
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务