forked from crossoverJie/JCSprout
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBinaryNodeTravel.java
More file actions
121 lines (97 loc) ยท 3.07 KB
/
BinaryNodeTravel.java
File metadata and controls
121 lines (97 loc) ยท 3.07 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.crossoverjie.algorithm;
import java.util.LinkedList;
/**
* Function: ๅฑๅบ้ๅ๏ผ้่ฆๅฐ้ๅ็่็นไธฒ่่ตทๆฅ
*
* @author crossoverJie
* Date: 2018/7/27 23:37
* @since JDK 1.8
*/
public class BinaryNodeTravel {
private Object data ;
private BinaryNodeTravel left ;
private BinaryNodeTravel right ;
public BinaryNodeTravel next;
public BinaryNodeTravel() {
}
public BinaryNodeTravel(Object data, BinaryNodeTravel left, BinaryNodeTravel right) {
this.data = data;
this.left = left;
this.right = right;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public BinaryNodeTravel getLeft() {
return left;
}
public void setLeft(BinaryNodeTravel left) {
this.left = left;
}
public BinaryNodeTravel getRight() {
return right;
}
public void setRight(BinaryNodeTravel right) {
this.right = right;
}
public BinaryNodeTravel createNode(){
BinaryNodeTravel nodeA = new BinaryNodeTravel("A",null,null) ;
BinaryNodeTravel nodeB = new BinaryNodeTravel("B",null,null) ;
BinaryNodeTravel nodeC = new BinaryNodeTravel("C",null,null) ;
BinaryNodeTravel nodeD = new BinaryNodeTravel("D",null,null) ;
BinaryNodeTravel nodeE = new BinaryNodeTravel("E",null,null) ;
BinaryNodeTravel nodeF = new BinaryNodeTravel("F",null,null) ;
nodeA.setLeft(nodeB);
nodeB.setLeft(nodeD);
nodeA.setRight(nodeC);
nodeC.setLeft(nodeE);
nodeC.setRight(nodeF);
return nodeA ;
}
@Override
public String toString() {
return "BinaryNode{" +
"data=" + data +
", left=" + left +
", right=" + right +
'}';
}
/**
* ไบๅๆ ็ๅฑๅบ้ๅ ๅๅฉไบ้ๅๆฅๅฎ็ฐ ๅๅฉ้ๅ็ๅ
่ฟๅ
ๅบ็็นๆง
*
* ้ฆๅ
ๅฐๆ น่็นๅ
ฅ้ๅ ็ถๅ้ๅ้ๅใ
*
* ๆๆถๆไธไธไธช่็นๅญ่ตทๆฅ๏ผๆฏๆฌก้ฝๆไธไธ่็น็ next ๆๅๅฝๅ่็น
*
* ้ฆๅ
ๅฐๆ น่็นๆๅฐๅบๆฅ๏ผๆฅ็ๅคๆญๅทฆ่็นๆฏๅฆไธบ็ฉบ ไธไธบ็ฉบๅๅ ๅ
ฅ้ๅ
* @param node
*/
public BinaryNodeTravel levelIterator(BinaryNodeTravel node){
LinkedList<BinaryNodeTravel> queue = new LinkedList<>() ;
//ๆๆถๅญๆพ็ไธไธ่็น
BinaryNodeTravel pre = null;
//ๅ
ๅฐๆ น่็นๅ
ฅ้
queue.offer(node) ;
BinaryNodeTravel current ;
while (!queue.isEmpty()){
current = queue.poll();
//ๅฐไธไธ่็นๆๅๅฝๅ่็น
if (pre == null){
pre = current ;
}else {
pre.next = current ;
pre = current;
}
if (current.getLeft() != null){
queue.offer(current.getLeft()) ;
}
if (current.getRight() != null){
queue.offer(current.getRight()) ;
}
}
return node ;
}
}