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

全部评论

相关推荐

11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务