《LeetCode力扣练习》代码随想录——二叉树(二叉搜索树中的众数—Java)
刷题思路来源于 代码随想录
501. 二叉搜索树中的众数
-
二叉树-中序遍历
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { private TreeNode pre = null; private int count = 0; private int maxCount = 0; private List<Integer> result = new ArrayList<>(); public int[] findMode(TreeNode root) { recursion(root); int[] nums = new int[result.size()]; for (int i = 0; i < result.size(); i++) { nums[i] = result.get(i); } return nums; } private void recursion(TreeNode root) { if (root == null) { return; } recursion(root.left); if (pre == null) { count = 1; } else if (pre != null && root.val == pre.val) { count++; } else { count = 1; } if (count == maxCount) { result.add(root.val); } if (count > maxCount) { maxCount = count; result = new ArrayList<>(); result.add(root.val); } pre = root; recursion(root.right); return; } }