Skip to content

Commit f71249e

Browse files
committed
剑指OfferII 043. 往完全二叉树添加节点
1 parent 783755f commit f71249e

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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+

0 commit comments

Comments
 (0)