1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class Solution { private static class State { private int k; private int num;
public State(int k) { this.k = k; } }
public int kthLargest(TreeNode root, int k) { State state = new State(k); dfs(state, root); return state.num; }
private void dfs(State state, TreeNode node) {
if (node.right != null) { dfs(state, node.right); }
if (state.k == 0) { return; } if (--state.k == 0) { state.num = node.val; }
if (node.left != null) { dfs(state, node.left); } } }
|