@@ -15,7 +15,8 @@ public class _1530 {
15
15
public static class Solution1 {
16
16
public int countPairs (TreeNode root , int distance ) {
17
17
Map <TreeNode , TreeNode > childToParentMap = new HashMap <>();
18
- List <TreeNode > leafNodes = findAllLeaves (root , childToParentMap , new ArrayList <>());
18
+ List <TreeNode > leafNodes = new ArrayList ();
19
+ postOrderToFindAllLeavesAndBuildChildParentMap (root , childToParentMap , leafNodes );
19
20
int pairs = 0 ;
20
21
for (TreeNode leaf : leafNodes ) {
21
22
pairs += bfsToPossibleLeaves (leaf , distance , childToParentMap );
@@ -51,22 +52,21 @@ private int bfsToPossibleLeaves(TreeNode leaf, int distance, Map<TreeNode, TreeN
51
52
return count ;
52
53
}
53
54
54
- private List < TreeNode > findAllLeaves (TreeNode node , Map <TreeNode , TreeNode > childToParentMap , List <TreeNode > leafNodes ) {
55
+ private void postOrderToFindAllLeavesAndBuildChildParentMap (TreeNode node , Map <TreeNode , TreeNode > childToParentMap , List <TreeNode > leafNodes ) {
55
56
if (node == null ) {
56
- return leafNodes ;
57
- }
58
- if (node .left == null && node .right == null ) {
59
- leafNodes .add (node );
57
+ return ;
60
58
}
61
59
if (node .left != null ) {
62
60
childToParentMap .put (node .left , node );
63
- findAllLeaves (node .left , childToParentMap , leafNodes );
64
61
}
65
62
if (node .right != null ) {
66
63
childToParentMap .put (node .right , node );
67
- findAllLeaves (node .right , childToParentMap , leafNodes );
68
64
}
69
- return leafNodes ;
65
+ postOrderToFindAllLeavesAndBuildChildParentMap (node .left , childToParentMap , leafNodes );
66
+ postOrderToFindAllLeavesAndBuildChildParentMap (node .right , childToParentMap , leafNodes );
67
+ if (node .left == null && node .right == null ) {
68
+ leafNodes .add (node );
69
+ }
70
70
}
71
71
}
72
72
}
0 commit comments