Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e691147

Browse files
authored
Create Number of Good Leaf Nodes Pairs.java
1 parent 57435b8 commit e691147

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
16+
class Solution {
17+
public int countPairs(TreeNode root, int distance) {
18+
Map<TreeNode, List<TreeNode>> graph = new HashMap<>();
19+
Set<TreeNode> leaves = new HashSet<>();
20+
traverse(root, null, graph, leaves);
21+
int result = 0;
22+
for (TreeNode leaf : leaves) {
23+
Queue<TreeNode> queue = new LinkedList<>();
24+
Set<TreeNode> visited = new HashSet<>();
25+
queue.add(leaf);
26+
visited.add(leaf);
27+
for (int i = 0; i <= distance; i++) {
28+
int size = queue.size();
29+
while (size-- > 0) {
30+
TreeNode curr = queue.remove();
31+
if (leaves.contains(curr) && curr != leaf) {
32+
result++;
33+
}
34+
for (TreeNode neighbor : graph.getOrDefault(curr, new ArrayList<>())) {
35+
if (visited.add(neighbor)) {
36+
queue.add(neighbor);
37+
}
38+
}
39+
}
40+
}
41+
}
42+
return result / 2;
43+
}
44+
45+
private void traverse(TreeNode node, TreeNode parent, Map<TreeNode, List<TreeNode>> graph, Set<TreeNode> leaves) {
46+
if (node == null) {
47+
return;
48+
}
49+
if (node.left == null && node.right == null) {
50+
leaves.add(node);
51+
}
52+
if (parent != null) {
53+
graph.computeIfAbsent(parent, k -> new ArrayList<>()).add(node);
54+
graph.computeIfAbsent(node, k -> new ArrayList<>()).add(parent);
55+
}
56+
traverse(node.left, node, graph, leaves);
57+
traverse(node.right, node, graph, leaves);
58+
}
59+
}

0 commit comments

Comments
 (0)