2024/9/01 LeetCode Hot100 binaryTree
This commit is contained in:
parent
2dda42f570
commit
19151f857e
|
@ -0,0 +1,57 @@
|
||||||
|
package com.cool.hot100.binary_tree;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created with IntelliJ IDEA.
|
||||||
|
*
|
||||||
|
* @Author: Cool
|
||||||
|
* @Date: 2024/09/01/19:34
|
||||||
|
* DayNumber 2
|
||||||
|
* Hard 2
|
||||||
|
* Level 5
|
||||||
|
*/
|
||||||
|
public class Num105 {
|
||||||
|
|
||||||
|
Map<Integer, Integer> map = new HashMap<>();
|
||||||
|
|
||||||
|
public TreeNode buildTree(int[] preorder, int[] inorder) {
|
||||||
|
for (int i = 0; i < inorder.length; i++) {
|
||||||
|
map.put(inorder[i], i);
|
||||||
|
}
|
||||||
|
return buildTree(preorder, 0, 0, inorder.length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeNode buildTree(int[] preorder, int indexInPre, int startInIn, int endInIn) {
|
||||||
|
if (startInIn > endInIn) return null;
|
||||||
|
TreeNode node = new TreeNode(preorder[indexInPre]);
|
||||||
|
Integer headInIn = map.get(preorder[indexInPre]);
|
||||||
|
int leftLength = headInIn - startInIn;
|
||||||
|
int rightLength = endInIn - headInIn;
|
||||||
|
node.left = buildTree(preorder,indexInPre+1,startInIn,headInIn-1);
|
||||||
|
node.right=buildTree(preorder,indexInPre+leftLength+1,headInIn+1,endInIn);
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
// TreeNode node1 = new TreeNode(6);
|
||||||
|
// TreeNode node2 = new TreeNode(2);
|
||||||
|
// TreeNode node3 = new TreeNode(4);
|
||||||
|
// TreeNode node4 = new TreeNode(3);
|
||||||
|
// TreeNode node5 = new TreeNode(5);
|
||||||
|
// TreeNode node6 = new TreeNode(2);
|
||||||
|
// TreeNode node7 = new TreeNode(1);
|
||||||
|
// node7.left = node6;
|
||||||
|
// node7.right = node5;
|
||||||
|
// node6.left = node4;
|
||||||
|
// node6.right = node3;
|
||||||
|
// node5.right = node1;
|
||||||
|
buildTree(new int[]{3, 9, 20, 15, 7}, new int[]{9, 3, 15, 20, 7});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
package com.cool.hot100.binary_tree;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created with IntelliJ IDEA.
|
||||||
|
*
|
||||||
|
* @Author: Cool
|
||||||
|
* @Date: 2024/09/01/17:17
|
||||||
|
* DayNumber 1
|
||||||
|
* Hard 2
|
||||||
|
* Level 3
|
||||||
|
*/
|
||||||
|
public class Num114 {
|
||||||
|
public void flatten(TreeNode root) {
|
||||||
|
// while (root != null) {
|
||||||
|
// TreeNode right = root.right;
|
||||||
|
// if (root.left != null) {
|
||||||
|
// TreeNode left = root.left;
|
||||||
|
// while (left.right != null) {
|
||||||
|
// left = left.right;
|
||||||
|
// }
|
||||||
|
// root.right = root.left;
|
||||||
|
// left.right = right;
|
||||||
|
// }
|
||||||
|
// root.left = null;
|
||||||
|
// root = root.right;
|
||||||
|
// }
|
||||||
|
dfs(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TreeNode dfs(TreeNode root) {
|
||||||
|
if (root == null) return null;
|
||||||
|
TreeNode returnRoot = root;
|
||||||
|
TreeNode right = dfs(root.right);
|
||||||
|
TreeNode left = dfs(root.left);
|
||||||
|
root.left = null;
|
||||||
|
if (left != null) {
|
||||||
|
root.right = left;
|
||||||
|
}
|
||||||
|
if (left != null && right != null) {
|
||||||
|
while (root.right!=null){
|
||||||
|
root=root.right;
|
||||||
|
}
|
||||||
|
root.right = right;
|
||||||
|
} else if (right != null) {
|
||||||
|
root.right = right;
|
||||||
|
}
|
||||||
|
return returnRoot;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
TreeNode node1 = new TreeNode(6);
|
||||||
|
TreeNode node2 = new TreeNode(2);
|
||||||
|
TreeNode node3 = new TreeNode(4);
|
||||||
|
TreeNode node4 = new TreeNode(3);
|
||||||
|
TreeNode node5 = new TreeNode(5);
|
||||||
|
TreeNode node6 = new TreeNode(2);
|
||||||
|
TreeNode node7 = new TreeNode(1);
|
||||||
|
node7.left = node6;
|
||||||
|
node7.right = node5;
|
||||||
|
node6.left = node4;
|
||||||
|
node6.right = node3;
|
||||||
|
node5.right = node1;
|
||||||
|
flatten(node7);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package com.cool.hot100.binary_tree;
|
package com.cool.hot100.binary_tree;
|
||||||
|
|
||||||
import sun.reflect.generics.tree.Tree;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
Loading…
Reference in New Issue