题目链接: 剑指 Offer 54. 二叉搜索树的第k大节点
题目描述:
给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
解法思路:
- 由于题目中二叉树是二叉搜索树(中序遍历是升序的),要求的是第 k 大的节点值,也就是倒数第 k 个数,
- 因此可以转换一下遍历顺序,按照 右->根->左的顺序进行遍历的话,得到的顺序就是降序的,
- 遍历 k 次即可
代码:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func kthLargest(root *TreeNode, k int) int {
var res int
var dfs func(*TreeNode)
dfs = func(root *TreeNode){
if root == nil {
return
}
dfs(root.Right)
k--
if k == 0 {
res = root.Val
}
dfs(root.Left)
}
dfs(root)
return res
}
标签:TreeNode,Offer,int,54,dfs,二叉,root,节点
From: https://www.cnblogs.com/lxing-go/p/17689571.html