题目
题源
代码
class Solution {
private TreeNode pre;
private int curSameNum = 0;
private int maxSameNum = 0;
public int[] findMode(TreeNode root) {
List<TreeNode> list = new ArrayList<TreeNode>();
helper(root, list);
int[] result = new int[list.size()];
int idx = 0;
for (TreeNode tn :list) {
result[idx++] = tn.val;
}
return result;
}
private void helper(TreeNode root, List list) {
if (root == null) return;
helper(root.left, list);
if (pre != null && pre.val == root.val) {
curSameNum++;
} else if (pre != null && pre.val != root.val) {
curSameNum = 0;
}
if (curSameNum > maxSameNum) {
maxSameNum = curSameNum;
list.clear();
list.add(root);
} else if (curSameNum == maxSameNum) {
list.add(root);
}
pre = root;
helper(root.right, list);
}
}