2024/9/2 Hot100 binaryTree
This commit is contained in:
parent
21b649fbe6
commit
2a72ebc5eb
|
@ -0,0 +1,46 @@
|
|||
package com.cool.hot100.binary_tree;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: Cool
|
||||
* @Date: 2024/09/02/14:38
|
||||
* DayNumber 2
|
||||
* Hard 2
|
||||
* Level ?
|
||||
*/
|
||||
public class Num236 {
|
||||
|
||||
Map<Integer, TreeNode> map = new HashMap<>();
|
||||
LinkedList<TreeNode> list = new LinkedList<>();
|
||||
List<LinkedList<TreeNode>> linkedLists = new ArrayList<>();
|
||||
|
||||
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
|
||||
if (root == null) return null;
|
||||
dfs(root, p, q);
|
||||
TreeNode node=new TreeNode();
|
||||
LinkedList<TreeNode> treeNodes = linkedLists.get(0);
|
||||
for (TreeNode treeNode : treeNodes) {
|
||||
if(linkedLists.get(1).contains(treeNode)){
|
||||
node=treeNode;
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
private void dfs(TreeNode root, TreeNode p, TreeNode q) {
|
||||
if (root == null) return;
|
||||
list.add(root);
|
||||
map.put(root.val, root);
|
||||
if (root==p||root==q){
|
||||
LinkedList<TreeNode> copyList = new LinkedList<>(list);
|
||||
linkedLists.add(copyList);
|
||||
}
|
||||
dfs(root.left, p, q);
|
||||
dfs(root.right, p, q);
|
||||
list.pollLast();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package com.cool.hot100.binary_tree;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
*
|
||||
* @Author: Cool
|
||||
* @Date: 2024/09/02/10:25
|
||||
* DayNumber 1
|
||||
* Hard 2
|
||||
* Level ?
|
||||
*/
|
||||
public class Num437 {
|
||||
|
||||
Map<Long, Integer> map = new HashMap<>();
|
||||
|
||||
public int pathSum(TreeNode root, int targetSum) {
|
||||
map.put(0L, 1);
|
||||
return pathSum(root, targetSum, 0L);
|
||||
}
|
||||
|
||||
public int pathSum(TreeNode root, int targetSum, Long sum) {
|
||||
if (root == null) {
|
||||
return 0;
|
||||
}
|
||||
int returnNum = 0;
|
||||
sum += root.val;
|
||||
returnNum = map.getOrDefault(sum - targetSum, 0);
|
||||
map.put(sum, map.getOrDefault(sum, 0) + 1);
|
||||
returnNum += pathSum(root.left, targetSum, sum);
|
||||
returnNum += pathSum(root.right, targetSum, sum);
|
||||
map.put(sum, map.getOrDefault(sum, 0) - 1);
|
||||
return returnNum;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
TreeNode node11 = new TreeNode(1);
|
||||
TreeNode node121 = new TreeNode(-2);
|
||||
TreeNode node = new TreeNode(1);
|
||||
TreeNode node1 = new TreeNode(3);
|
||||
TreeNode node2 = new TreeNode(11);
|
||||
TreeNode node3 = new TreeNode(2);
|
||||
TreeNode node4 = new TreeNode(3);
|
||||
TreeNode node5 = new TreeNode(-3);
|
||||
TreeNode node6 = new TreeNode(5);
|
||||
TreeNode node7 = new TreeNode(10);
|
||||
node7.left = node6;
|
||||
node7.right = node5;
|
||||
node6.left = node4;
|
||||
node6.right = node3;
|
||||
node5.right = node2;
|
||||
node4.left = node1;
|
||||
node4.right = node121;
|
||||
node3.right = node11;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue