File tree Expand file tree Collapse file tree 7 files changed +156
-0
lines changed
lcci0405_legal_binary_search_tree Expand file tree Collapse file tree 7 files changed +156
-0
lines changed Original file line number Diff line number Diff line change
1
+ package lcci0403_list_of_depth ;
2
+
3
+ public class ListNode {
4
+ int val ;
5
+
6
+ ListNode next ;
7
+
8
+ ListNode (int x ) {
9
+ val = x ;
10
+ }
11
+ }
Original file line number Diff line number Diff line change
1
+ package lcci0403_list_of_depth ;
2
+
3
+ import java .util .ArrayList ;
4
+ import java .util .LinkedList ;
5
+ import java .util .List ;
6
+ import java .util .Queue ;
7
+
8
+ /**
9
+ * 层序遍历。
10
+ *
11
+ * 时间复杂度和空间复杂度均是O(n),其中n为树中的节点个数。
12
+ *
13
+ * 执行用时:1ms,击败98.68%。消耗内存:37.9MB,击败100.00%。
14
+ */
15
+ public class Solution {
16
+ public ListNode [] listOfDepth (TreeNode tree ) {
17
+ if (null == tree ) {
18
+ return new ListNode [0 ];
19
+ }
20
+ List <ListNode > list = new ArrayList <>();
21
+ Queue <TreeNode > queue = new LinkedList <>();
22
+ queue .add (tree );
23
+ while (!queue .isEmpty ()) {
24
+ int qSize = queue .size ();
25
+ ListNode dummyHead = new ListNode (-1 ), cur = dummyHead ;
26
+ for (int i = 0 ; i < qSize ; i ++) {
27
+ TreeNode now = queue .poll ();
28
+ cur .next = new ListNode (now .val );
29
+ cur = cur .next ;
30
+ if (null != now .left ) {
31
+ queue .add (now .left );
32
+ }
33
+ if (null != now .right ) {
34
+ queue .add (now .right );
35
+ }
36
+ }
37
+ list .add (dummyHead .next );
38
+ }
39
+ ListNode [] result = new ListNode [list .size ()];
40
+ for (int i = 0 ; i < result .length ; i ++) {
41
+ result [i ] = list .get (i );
42
+ }
43
+ return result ;
44
+ }
45
+ }
Original file line number Diff line number Diff line change
1
+ package lcci0403_list_of_depth ;
2
+
3
+ public class TreeNode {
4
+ int val ;
5
+
6
+ TreeNode left ;
7
+
8
+ TreeNode right ;
9
+
10
+ TreeNode (int x ) {
11
+ val = x ;
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ package lcci0405_legal_binary_search_tree ;
2
+
3
+ /**
4
+ * 中序遍历。
5
+ *
6
+ * 时间复杂度和空间复杂度均是O(n),其中n为树中的节点个数。
7
+ *
8
+ * 执行用时:0ms,击败100.00%。消耗内存:39.4MB,击败100.00%。
9
+ */
10
+ public class Solution {
11
+ private Integer pre ;
12
+
13
+ private boolean result = true ;
14
+
15
+ public boolean isValidBST (TreeNode root ) {
16
+ inOrderTraversal (root );
17
+ return result ;
18
+ }
19
+
20
+ private void inOrderTraversal (TreeNode treeNode ) {
21
+ if (null == treeNode || !result ) {
22
+ return ;
23
+ }
24
+ inOrderTraversal (treeNode .left );
25
+ if (pre != null && treeNode .val <= pre ) {
26
+ result = false ;
27
+ return ;
28
+ }
29
+ pre = treeNode .val ;
30
+ inOrderTraversal (treeNode .right );
31
+ }
32
+ }
Original file line number Diff line number Diff line change
1
+ package lcci0405_legal_binary_search_tree ;
2
+
3
+ public class TreeNode {
4
+ int val ;
5
+
6
+ TreeNode left ;
7
+
8
+ TreeNode right ;
9
+
10
+ TreeNode (int x ) {
11
+ val = x ;
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ package lcci0406_successor ;
2
+
3
+ /**
4
+ * 中序遍历。
5
+ *
6
+ * 时间复杂度和空间复杂度均是O(n),其中n为树中的节点个数。
7
+ *
8
+ * 执行用时:3ms,击败100.00%。消耗内存:40.2MB,击败100.00%。
9
+ */
10
+ public class Solution {
11
+ private TreeNode pre , result ;
12
+
13
+ public TreeNode inorderSuccessor (TreeNode root , TreeNode p ) {
14
+ inOrderTraversal (root , p );
15
+ return result ;
16
+ }
17
+
18
+ private void inOrderTraversal (TreeNode treeNode , TreeNode p ) {
19
+ if (null == treeNode || null != result ) {
20
+ return ;
21
+ }
22
+ inOrderTraversal (treeNode .left , p );
23
+ if (pre == p ) {
24
+ result = treeNode ;
25
+ }
26
+ pre = treeNode ;
27
+ inOrderTraversal (treeNode .right , p );
28
+ }
29
+ }
Original file line number Diff line number Diff line change
1
+ package lcci0406_successor ;
2
+
3
+ public class TreeNode {
4
+ int val ;
5
+
6
+ TreeNode left ;
7
+
8
+ TreeNode right ;
9
+
10
+ TreeNode (int x ) {
11
+ val = x ;
12
+ }
13
+ }
You can’t perform that action at this time.
0 commit comments