技术点就是本层遍历完毕后,队列中就已经有了下一次要遍历的数据
所以再次遍历时,我们需要记住本层要遍历的个数。
操作节点是加入节点的左右节点,方便下一次的遍历。
package shuJuJieGouYuSuanFa.erChaShu;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class DFS {
public static void main(String[] args) {
MyErChaShu root = MyErChaShu.getRoot();
Queue<MyErChaShu> dui = new LinkedList<>();
List<Integer> list = new ArrayList<>();
MyErChaShu p = null;
int size = list.size();
dui.offer(root);
while (!dui.isEmpty()) {
//记录本层的个数
size = dui.size();
for (int i = 0; i < size; i++) {
p = dui.poll();
//操作节点的同时加入下一层的节点。
if (p.left != null) {
dui.offer(p.left);
}
if (p.right != null) {
dui.offer(p.right);
}
list.add(p.val);
}
}
System.out.println(list);
}
}