最强解析面试题:二叉搜索树的第k个结点
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:二叉搜索树的第k个结点相关的知识,希望对你有一定的参考价值。
最强解析面试题:二叉搜索树的第k个结点
文章讲解 “ 二叉搜索树的第k个结点 ” 经典面试题,包含思路及源码,及解惑!
题目
给定一棵结点数为 n 二叉搜索树,请找出其中的第 k 小的TreeNode结点。
注意:不是返回结点的值
示例1
输入:
{5,3,7,2,4,6,8},3
返回值:
4
说明:
按结点数值升序顺序可知第三小结点的值为4 ,故返回对应结点值为4的结点即可。
示例2
输入:
{},1
返回值:
“null”
说明:
结点数n为0,所以返回对应编程语言的空结点即可。
思路
1、中序遍历为增序,解第 k 个节点,或 第 k 大的节点,中序遍历即可
2、要判断每次遍历结果,非空返回 node。只有空才是到达叶子节点,进行计数开始
代码
package main
import.”nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
*
* @param pRoot TreeNode类
* @param k int整型
* @return TreeNode类
*/
var num = 0
func KthNode(pRoot *TreeNode, k int) *TreeNode {
// write code here
if pRoot == nil || k < 1 {
return nil
}
node := KthNode(pRoot.Left, k)
if node != nil {
return node
}
num++
if num == k {
return pRoot
}
node = KthNode(pRoot.Right, k)
if node != nil {
return node
}
return nil
}
附录
忙碌
以上是关于最强解析面试题:二叉搜索树的第k个结点的主要内容,如果未能解决你的问题,请参考以下文章