-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAddOneRow.java
76 lines (73 loc) · 2.2 KB
/
AddOneRow.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class AddOneRow {
/*
Runtime: 2 ms, faster than 26.01% of Java online submissions for Add One Row to Tree.
Memory Usage: 45.8 MB, less than 13.91% of Java online submissions for Add One Row to Tree.
*/
public TreeNode addOneRow(TreeNode root, int val, int depth) {
int cur_depth=1;
if(depth==1)
{
TreeNode temp=new TreeNode(val);
temp.left=root;
root= temp;
return root;
}
Queue<TreeNode> queue=new LinkedList<TreeNode>();
queue.add(root);
while(!queue.isEmpty())
{
int size=queue.size();
cur_depth++;
for(int i=0;i<size;i++)
{
TreeNode node=queue.poll();
TreeNode leftNode=node.left;
TreeNode rightNode=node.right;
if(leftNode!=null)
queue.offer(leftNode);
if(rightNode!=null)
queue.offer(rightNode);
if(cur_depth==depth)
{
TreeNode temp=null;
if(leftNode==null)
{
node.left=new TreeNode(val);
}
else
{
temp=node.left;
node.left=new TreeNode(val);
node.left.left=leftNode;
}
if(rightNode==null)
{
node.right=new TreeNode(val);
}
else
{
temp=node.right;
node.right=new TreeNode(val);
node.right.right=rightNode;
}
}
}
}
return root;
}
}