同BFS算法一样,用队列实现。
每次遍历先将一层的节点入队,然后在挨个出队,每个节点出队的同时,再将他的子节点入队。循环往复,直到最后队列为空为止。
class TreeNode{
public int val;
public TreeNode leftTreeNode;
public TreeNode rightTreeNode;
TreeNode(int val){
this.val = val;
}
}
public void bfs(TreeNode root){
Queue<TreeNode> queue = new LinkedList<>();
if (root==null){
return;
}
queue.offer(root);
while (!queue.isEmpty()){
TreeNode cur = queue.poll();
System.out.println(cur.val);
if (cur.leftTreeNode!=null)
queue.offer(cur.leftTreeNode);
if (cur.rightTreeNode!=null)
queue.offer(cur.rightTreeNode);
}
}