题解 | #二叉搜索树的第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 }