思路:就是深度遍历二叉树,记录两个thistime maxtime,在遍历的过程中记录,如果thistime > maxtime 直接将返回的数组进行clear(),重新进行记录;
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int maxTimes = 0;
int thisTimes = 0;
List<Integer> res = new LinkedList<Integer>();
TreeNode pre = null;
public int[] findMode(TreeNode root) {
inOrder(root);
int length = res.size();
int[] rr = new int[length];
for(int i = 0; i < length; i++) {
rr[i] = res.get(i);
}
return rr;
}
public void inOrder(TreeNode root) {
if(root == null) {
return;
}
inOrder(root.left);
if(pre != null && pre.val == root.val) {
thisTimes+