给网站做友情链接,哈尔滨网络搭建,wordpress怎么安装?,凤岗东莞网站建设1. 二叉搜索树的最小绝对差
530. 二叉搜索树的最小绝对差https://leetcode.cn/problems/minimum-absolute-difference-in-bst/
给你一个二叉搜索树的根节点 root #xff0c;返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数#xff0c;其数值等于两值之差的绝…1. 二叉搜索树的最小绝对差
530. 二叉搜索树的最小绝对差https://leetcode.cn/problems/minimum-absolute-difference-in-bst/
给你一个二叉搜索树的根节点 root 返回 树中任意两不同节点值之间的最小差值 。
差值是一个正数其数值等于两值之差的绝对值。
示例 1 输入root [4,2,6,1,3]
输出1
示例 2 输入root [1,0,48,null,null,12,49]
输出1
解题思路
要求最小的差根据特性对于每一个节点root来说左右子树中差值最小的节点是左子树的最右节点右子树的最左节点。
考虑递归实现
返回值和参数root节点为参数返回当前的最小差值终止条件root为null的时候返回一个特别大的值比如Integer.MAX_VALUE递归逻辑中序遍历先递归左节点然后比较返回值和root与左边最大值的差值并更新最大值为root然后右节点。
代码
class Solution {TreeNode max;public int getMinimumDifference(TreeNode root) {if (root null)return Integer.MAX_VALUE;int left getMinimumDifference(root.left);//左int min max ! null ? Math.min(left, root.val - max.val) : left;//如果已经有max了就判断当前节点的插值和左边返回的插值中小的那个max root;return Math.min(min, getMinimumDifference(root.right));//右并比较左右返回值的较小值返回}
}
2. 二叉搜索树中的众数
501. 二叉搜索树中的众数https://leetcode.cn/problems/find-mode-in-binary-search-tree/
给你一个含重复值的二叉搜索树BST的根节点 root 找出并返回 BST 中的所有 众数即出现频率最高的元素。
如果树中有不止一个众数可以按 任意顺序 返回。
假定 BST 满足如下定义
结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树
示例 1 输入root [1,null,2,2]
输出[2]
示例 2
输入root [0]
输出[0] 解题思路
利用二叉树的特性中序遍历但是遍历过程中需要维持一个list来保存过程中的众数也要有一个count来记录当前的count也要一个maxCount来记录最大的众数次数。
代码
class Solution {TreeNode pre;int maxCount;int count;ListInteger list;public int[] findMode(TreeNode root) {maxCount 0;count 0;list new ArrayList();searchBST(root);return list.stream().mapToInt(Integer::intValue).toArray();}public void searchBST(TreeNode root) {if (root null)return;searchBST(root.left);if (pre ! null pre.val root.val)count;elsecount 1;if (count maxCount)list.add(root.val);else if (count maxCount) {list.clear();list.add(root.val);maxCount count;}pre root;searchBST(root.right);}
}