Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdbe51e8

Browse files
committed
add 1028
1 parent867dc31 commitdbe51e8

File tree

132 files changed

+447
-139
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+447
-139
lines changed

‎README.md

Lines changed: 136 additions & 137 deletions
File renamed without changes.
File renamed without changes.

‎note/0209/README.md

Lines changed: 81 additions & 0 deletions

‎note/1014/README.md

Lines changed: 2 additions & 2 deletions

‎note/1028/README.md

Lines changed: 148 additions & 0 deletions
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
packagecom.blankj.hard._1028;
2+
3+
importcom.blankj.structure.TreeNode;
4+
5+
importjava.util.LinkedList;
6+
7+
/**
8+
* <pre>
9+
* author: Blankj
10+
* blog : http://blankj.com
11+
* time : 2020/06/19
12+
* desc :
13+
* </pre>
14+
*/
15+
publicclassSolution {
16+
17+
publicTreeNoderecoverFromPreorder(StringS) {
18+
char[]chars =S.toCharArray();
19+
intlen =chars.length;
20+
LinkedList<TreeNode>stack =newLinkedList<>();
21+
for (inti =0;i <len; ) {
22+
intlevel =0,val =0;
23+
while (chars[i] =='-') {// 获取所在层级,Character.isDigit() 会比较慢
24+
++i;
25+
++level;
26+
}
27+
while (i <len &&chars[i] !='-') {// 获取节点的值
28+
val =val *10 +chars[i++] -'0';
29+
}
30+
TreeNodecurNode =newTreeNode(val);
31+
while (stack.size() >level) {// 栈顶不是父亲,栈顶出栈
32+
stack.removeLast();
33+
}
34+
if (level >0) {
35+
TreeNodeparent =stack.getLast();
36+
if (parent.left ==null) {// 如果节点只有一个子节点,那么保证该子节点为左子节点。
37+
parent.left =curNode;
38+
}else {
39+
parent.right =curNode;
40+
}
41+
}
42+
stack.addLast(curNode);
43+
}
44+
returnstack.get(0);
45+
}
46+
47+
// public TreeNode recoverFromPreorder(String S) {
48+
// char[] chars = S.toCharArray();
49+
// int len = chars.length;
50+
// List<TreeNode> levels = new LinkedList<>();
51+
// for (int i = 0; i < len; ) {
52+
// int level = 0, val = 0;
53+
// while (chars[i] == '-') { // 获取所在层级,Character.isDigit() 会比较慢
54+
// ++i;
55+
// ++level;
56+
// }
57+
// while (i < len && chars[i] != '-') { // 获取节点的值
58+
// val = val * 10 + chars[i++] - '0';
59+
// }
60+
// TreeNode curNode = new TreeNode(val);
61+
// if (level > 0) {
62+
// TreeNode parent = levels.get(level - 1);
63+
// if (parent.left == null) { // 如果节点只有一个子节点,那么保证该子节点为左子节点。
64+
// parent.left = curNode;
65+
// } else {
66+
// parent.right = curNode;
67+
// }
68+
// }
69+
// levels.add(level, curNode); // 因为是前序遍历(根-左-右),也就是右覆盖左时,此时左树已遍历完成,故无需考虑覆盖问题
70+
// }
71+
// return levels.get(0);
72+
// }
73+
74+
publicstaticvoidmain(String[]args) {
75+
Solutionsolution =newSolution();
76+
TreeNode.print(solution.recoverFromPreorder("1-2--3--4-5--6--7"));
77+
System.out.println("==============================================");
78+
TreeNode.print(solution.recoverFromPreorder("1-2--3---4-5--6---7"));
79+
}
80+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp