题解 | #二叉搜索树的第k个节点#
二叉搜索树的第k个节点
https://www.nowcoder.com/practice/57aa0bab91884a10b5136ca2c087f8ff
二叉搜索树: 所有左孩子小于根节点,所有右孩子大于根节点
先递归遍历二叉搜索树,将从小到大排序
第 K 个值即为第 K 小的节点值
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param proot TreeNode类
* @param k int整型
* @return int整型
*/
func KthNode(root *TreeNode, k int) int {
if root == nil || k == 0 {
return -1
}
arr := process(root)
if len(arr) < k {
return -1
}
return arr[k-1]
}
func process(root *TreeNode) []int {
if root == nil {
return nil
}
ans := make([]int, 0)
ans = append(ans, process(root.Left)...)
ans = append(ans, root.Val)
ans = append(ans, process(root.Right)...)
return ans
}
查看6道真题和解析