博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer(64):二叉搜索树的第k大的节点
阅读量:4286 次
发布时间:2019-05-27

本文共 932 字,大约阅读时间需要 3 分钟。

题目描述

给定一颗二叉搜索树,请找出其中的第k大的结点。

分析

对二叉搜索树进行中序遍历,则遍历序列是递增排序的,因此中序遍历一颗二叉搜索树,可以很容易的得到它的第k大的节点。使用一个计数器变量,每遍历一个节点,计数器加1,当计数器的值等于k时,root节点即为所求节点。

/*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {
int count = 0; // 遍历计数 TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot == null || k <= 0) return null; TreeNode target = null; if(pRoot.left != null) // 遍历左子树 target = KthNode(pRoot.left, k); count++; // 计数加1 if(target == null) { if(count == k) { // 如果计数等于k,则找到pRoot target = pRoot; return target; } } if(target == null && pRoot.right != null) // 遍历右子树 target = KthNode(pRoot.right, k); return target; }}

参考

1. 何海涛,剑指offer名企面试官精讲典型编程题(纪念版),电子工业出版社

转载地址:http://akxgi.baihongyu.com/

你可能感兴趣的文章
父类指针访问子类私有对象
查看>>
Windows CMD.exe 系统找不到指定的路径
查看>>
SpringBoot电商项目实战 — 商品的SPU/SKU实现
查看>>
SpringBoot电商项目实战 — ElasticSearch接入实现
查看>>
精选的10款Java开源项目,建议收藏
查看>>
Zookeeper+dubbo分布式开发学习(一)
查看>>
JAVA微信扫码支付及微信App支付开发(模式二)完整功能实现
查看>>
Could not parse multipart servlet request; nested exception is java.io.IOException
查看>>
Java面试题汇总---基础版(附答案)
查看>>
Java面试题汇总---升级版(附答案)
查看>>
分布式文件系统之FastDFS文件服务器原理及搭建
查看>>
linux系统中安装mysql详解
查看>>
Java开发者应该养成的良好习惯
查看>>
微信小程序支付+Java后台实现(完整版)
查看>>
Spring Boot实现分布式微服务开发实战系列(一)
查看>>
Spring Boot实现分布式微服务电商项目开发实战系列(二)
查看>>
SpringBoot+Dubbo实现分布式微服务开发实战系列(三)
查看>>
Spring Boot实现分布式微服务开发实战系列 -- api接口安全
查看>>
Spring Boot实现分布式微服务开发实战系列 -- AOP切面实现及防SQL注入
查看>>
基于Zookeeper的Curator分布式锁实现
查看>>