已解答 简单
相关标签
相关企业给你一个二叉搜索树的根节点 root
,返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数,其数值等于两值之差的绝对值。
示例 1:
![](https://assets.leetcode.com/uploads/2021/02/05/bst1.jpg)
输入:root = [4,2,6,1,3]
输出:1
示例 2:
![](https://assets.leetcode.com/uploads/2021/02/05/bst2.jpg)
输入:root = [1,0,48,null,null,12,49]
输出:1
提示:
- 树中节点的数目范围是
[2, 104]
0 <= Node.val <= 105
func getMinimumDifference(root *TreeNode) int { minDiff := math.MaxInt var pre *TreeNode var inorder func(node*TreeNode) inorder = func(node *TreeNode) { if node == nil { return } inorder(node.Left) if pre != nil { if minDiff > abs(node.Val-pre.Val) { minDiff = abs(node.Val - pre.Val) } } pre = node inorder(node.Right) } inorder(root) return minDiff }
func abs(value int) int { if value < 0 { return 0 - value } return value }
已解答 简单
相关标签
相关企业给你一个含重复值的二叉搜索树(BST)的根节点 root
,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。
如果树中有不止一个众数,可以按 任意顺序 返回。
假定 BST 满足如下定义:
- 结点左子树中所含节点的值 小于等于 当前节点的值
- 结点右子树中所含节点的值 大于等于 当前节点的值
- 左子树和右子树都是二叉搜索树
示例 1:
![](https://assets.leetcode.com/uploads/2021/03/11/mode-tree.jpg)
输入:root = [1,null,2,2]
输出:[2]
示例 2:
输入:root = [0]
输出:[0]
提示:
- 树中节点的数目在范围
[1, 104]
内 -105 <= Node.val <= 105
进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func findMode(root *TreeNode) []int { varres []int varmaxCountint varcurCountint varpre *TreeNode vardfsfunc(node *TreeNode) dfs = func(node *TreeNode) { if node == nil { return } dfs(node.Left) if pre == nil { curCount = 1 } else { if node.Val == pre.Val { curCount++ } else { curCount = 1 } } if curCount == maxCount { res = append(res, node.Val) } if curCount > maxCount { maxCount = curCount res = []int{node.Val} } pre = node dfs(node.Right) } dfs(root) return res }
已解答 中等
相关标签
相关企业给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
示例 1:
![](https://assets.leetcode.com/uploads/2018/12/14/binarytree.png)
输入:输出:解释:
5
1
3 。
示例 2:
![](https://assets.leetcode.com/uploads/2018/12/14/binarytree.png)
输入:输出:解释:
5
4
5 。
示例 3:
输入:root = [1,2], p = 1, q = 2
输出:1
提示:
- 树中节点数目在范围
[2, 105]
内。 -109 <= Node.val <= 109
- 所有
Node.val
互不相同
。 p != q
p
和q
均存在于给定的二叉树中。
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode { if root == nil { returnnil } if root == p || root == q { return root } leftPoint := lowestCommonAncestor(root.Left, p, q) rightPoint := lowestCommonAncestor(root.Right, p, q) if leftPoint != nil && rightPoint != nil { return root } if leftPoint != nil { return leftPoint } return rightPoint } 标签:node,TreeNode,树中,随想录,二叉,搜索,return,root,节点 From: https://www.cnblogs.com/suxinmian/p/18019759