• [LeetCode]501. Find Mode in Binary Search Tree二叉搜索树寻找众数


    这次是二叉搜索树的遍历

    感觉只要和二叉搜索树的题目,都要用到一个重要性质:

    中序遍历二叉搜索树的结果是一个递增序列;

    而且要注意,在递归遍历树的时候,有些参数如果是要随递归不断更新(也就是如果递归返回上层,参数也需要最新的),就要用全局变量,而不是传参,其实这就是全局变量的定义。

    不过如果是保存每层递归内的信息,就需要传参数。

    本题显然是需要全局参数

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        /*
        思路还是利用二叉搜索树的重要性质:
        中序遍历的结果是一个递增序列
        比较当前元素和上个元素的数判断是不是同一个数,记录每个数出现的次数
        根据次数,不断更新最后的结果
         */
        List<Integer> res = new ArrayList<>();
        int pre = Integer.MIN_VALUE;
        int cur = 0;
        int max = 0;
        public int[] findMode(TreeNode root) {
            if (root==null) return new int[0];
            inOrder(root);
            int[] a = new int[res.size()];
            for (int i = 0; i < res.size(); i++) {
                a[i] = res.get(i);
            }
            return a;
        }
        public void inOrder(TreeNode root)
        {
            if (root==null) return;
            System.out.println(pre);
            inOrder(root.left);
            if (root.val==pre)
            {
                cur++;
            }
            else
                cur=1;
            pre = root.val;
            if (cur>max)
            {
                max = cur;
                res.clear();
                res.add(root.val);
            }
            else if (cur==max)
            {
                res.add(root.val);
            }
            inOrder(root.right);
        }
    }
  • 相关阅读:
    我的第一个作业
    团队任务3:第一次冲刺
    课后作业3:个人项目(词频统计及其效能分析)
    课后作业2:个人项目
    一切的开始,从未有过的改变——课后作业1:准备
    Fiddler 添加IP显示、响应时间功能
    Jmeter所有结果分析
    云盘资源爬取利器 fmv
    python 中的 sys , os 模块用法总结
    Python 编写登录接口
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8329583.html
Copyright © 2020-2023  润新知