问题描述:给定一个有相同值的二叉搜索树(BST),找出BST中的所有众数(出现频率最高的元素)。假定BSF有以下定义:节点左子树所含节点的值小于等于当前节点的值,节点右子树中所含节点的值大于等于当前节点的值,左子树和右子树优势二叉搜索树。
中序遍历解决:二叉搜索树的中序遍历结果是有序的,有一种方式就是将整个二叉搜索树放在一个数组中,在遍历这个数组进行寻找众数。
public void massiveNumber(TreeNode root,List<Integer>res)
{
if(root==null){return;}
massiveNumber(root.left);
res.add(root.val);
massiveNumber(root.right);
}
public int MassiveNumber(TreeNode root)
{
List<Integer>res=new LinkedList<>();
massiveNumber(root,res);
int maxCount=Integer.MIN_VALUE;
int nowCount=1;
int formerValue=res.get(0);
for(int i=1;i<res.size();i++)
{
if(res.get(i)==formerValue)
{
nowCount++;
}else
{
maxCount=Max.max(maxCount,nowCount);
nowCount=1;
formerValue=res.get(i);
}
}
???????return maxCount;
}