BinaryTreeTraverser.java
2.63 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.google.common.collect;
import com.google.common.annotations.Beta;
import com.google.common.annotations.GwtCompatible;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import java.util.ArrayDeque;
import java.util.BitSet;
import java.util.Deque;
import java.util.Iterator;
@Beta
@GwtCompatible(emulated=true)
public abstract class BinaryTreeTraverser<T>
extends TreeTraverser<T>
{
public final Iterable<T> children(final T paramT)
{
Preconditions.checkNotNull(paramT);
new FluentIterable()
{
public final Iterator<T> iterator()
{
new AbstractIterator()
{
boolean a;
boolean b;
protected final T computeNext()
{
Optional localOptional;
if (!this.a)
{
this.a = true;
localOptional = BinaryTreeTraverser.this.leftChild(BinaryTreeTraverser.1.this.a);
if (localOptional.isPresent()) {
return (T)localOptional.get();
}
}
if (!this.b)
{
this.b = true;
localOptional = BinaryTreeTraverser.this.rightChild(BinaryTreeTraverser.1.this.a);
if (localOptional.isPresent()) {
return (T)localOptional.get();
}
}
return (T)endOfData();
}
};
}
};
}
public final FluentIterable<T> inOrderTraversal(final T paramT)
{
Preconditions.checkNotNull(paramT);
new FluentIterable() {};
}
public abstract Optional<T> leftChild(T paramT);
public abstract Optional<T> rightChild(T paramT);
final class a
extends AbstractIterator<T>
{
private final Deque<T> b = new ArrayDeque();
private final BitSet c = new BitSet();
a()
{
Object localObject;
this.b.addLast(localObject);
}
protected final T computeNext()
{
while (!this.b.isEmpty())
{
Object localObject = this.b.getLast();
if (this.c.get(this.b.size() - 1))
{
this.b.removeLast();
this.c.clear(this.b.size());
BinaryTreeTraverser.a(this.b, BinaryTreeTraverser.this.rightChild(localObject));
return (T)localObject;
}
this.c.set(this.b.size() - 1);
BinaryTreeTraverser.a(this.b, BinaryTreeTraverser.this.leftChild(localObject));
}
return (T)endOfData();
}
}
}
/* Location: /home/merong/decompile/hackery-dex2jar.jar!/com/google/common/collect/BinaryTreeTraverser.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/