其他分享
首页 > 其他分享> > leetcode501_二叉搜索树中的众数

leetcode501_二叉搜索树中的众数

作者:互联网

利用BST的中序遍历是有序的这个特点即可,再使用树的双指针即可。
难点在于先处理time,再使用time去更新list。
然后双指针的初始化问题是双指针中经常遇到的问题。

class Solution {
    private TreeNode pre;
    private int maxTime = 0, time=0;
    private List<Integer> list = new ArrayList();
    public int[] findMode(TreeNode root) {
        if(root.left == null && root.right == null) return new int[]{root.val};
        traversal(root);
        return list.stream().mapToInt(Integer::intValue).toArray();
    }
    private void traversal(TreeNode root) {
        if(root == null) return;
        traversal(root.left);
        if(pre==null) time = 1;
        else if(pre.val == root.val) time++;
        else time = 1;
        pre = root;
        if(time > maxTime) {
            maxTime = time;
            list = new ArrayList();
            list.add(root.val);
        }
        else if(time == maxTime) {
            list.add(root.val);
        }
        traversal(root.right);
    }
}

标签:pre,val,树中,众数,list,private,leetcode501,time,root
来源: https://www.cnblogs.com/huangming-zzz/p/15972350.html