【二叉树】二分查找树,中序遍历,统计出现次数最多的节点【Add to List 501. Find Mode in Binary Search Tree】

来源:互联网 发布:日本人对二战 知乎 编辑:程序博客网 时间:2024/06/06 03:27

题目链接:https://leetcode.com/problems/find-mode-in-binary-search-tree/#/description

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<int> ans;    int maxCnt=0;   //  最大出现次数    int curCnt=0;   //  当前出现次数    int curNum=1<<29;       //  当前遍历值    vector<int> findMode(TreeNode* root) {        //  从小到大,中序遍历        print(root);        return ans;    }    //  中序遍历    void print(TreeNode* root){        if(root==NULL) return;        print(root->left);        //  开始统计        if(maxCnt==0){            curCnt=1;            curNum=root->val;        }else{            if(curNum==root->val){                curCnt++;            }else{                curCnt=1;                curNum=root->val;            }        }        //  判断1、出现新的数出现次数最多        if(curCnt>maxCnt){            ans.clear();            ans.push_back(curNum);            maxCnt=curCnt;  //  更新最大出现次数        }else if(curCnt==maxCnt){   //  判断2、当前值的出现次数和出现最多次数一样多            ans.push_back(curNum);        }        print(root->right);    }};


阅读全文
0 0
原创粉丝点击