File tree Expand file tree Collapse file tree 1 file changed +75
-0
lines changed Expand file tree Collapse file tree 1 file changed +75
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .gatsby .offerII ;
2
+
3
+ import java .util .ArrayDeque ;
4
+ import java .util .Objects ;
5
+ import java .util .Queue ;
6
+
7
+ /**
8
+ * @ClassName: _43CbtInserter
9
+ * @Description: 剑指 Offer II 043. 往完全二叉树添加节点
10
+ * @author: Gatsby
11
+ * @date: 2022/7/29 9:45
12
+ */
13
+
14
+ public class _43CbtInserter {
15
+ class TreeNode {
16
+ int val ;
17
+ TreeNode left ;
18
+ TreeNode right ;
19
+
20
+ TreeNode () {
21
+ }
22
+
23
+ TreeNode (int val ) {
24
+ this .val = val ;
25
+ }
26
+
27
+ TreeNode (int val , TreeNode left , TreeNode right ) {
28
+ this .val = val ;
29
+ this .left = left ;
30
+ this .right = right ;
31
+ }
32
+ }
33
+
34
+ private TreeNode root ;
35
+ private Queue <TreeNode > candidate ;
36
+
37
+ public _43CbtInserter (TreeNode root ) {
38
+ this .root = root ;
39
+ this .candidate = new ArrayDeque <>();
40
+
41
+ Queue <TreeNode > queue = new ArrayDeque <>();
42
+ queue .add (root );
43
+ while (!queue .isEmpty ()) {
44
+ TreeNode node = queue .poll ();
45
+ if (!Objects .isNull (node .left )) {
46
+ queue .add (node .left );
47
+ }
48
+ if (!Objects .isNull (node .right )) {
49
+ queue .add (node .right );
50
+ }
51
+ if (!Objects .isNull (node .left ) || !Objects .isNull (node .right )) {
52
+ candidate .add (node );
53
+ }
54
+ }
55
+ }
56
+
57
+ public int insert (int v ) {
58
+ TreeNode child = new TreeNode (v );
59
+ TreeNode node = candidate .peek ();
60
+ if (Objects .isNull (node .left )) {
61
+ node .left = child ;
62
+ } else {
63
+ node .right = child ;
64
+ candidate .poll ();
65
+ }
66
+ candidate .add (child );
67
+ return node .val ;
68
+ }
69
+
70
+ public TreeNode get_root () {
71
+ return this .root ;
72
+ }
73
+ }
74
+
75
+
You can’t perform that action at this time.
0 commit comments