二叉树的广度优先遍历可以简单的理解为按层遍历,每层依次从左至右遍历,其实现如下:
public class TreeNode{
//左子节点
private TreeNode leftChild = null;
//右子节点
private TreeNode rightChild = null;
//节点数据
private int data = 0;
//广度优先遍历
private static String breadthFirstVisit(final TreeNode root){
if(root == null){
return null;
}
return visitNodes(new ArrayList<TreeNode>(1){{
add(root);
}});
}
private static String visitNodes(List<TreeNode> nodes){
StringBuilder path = new StringBuilder();
List<TreeNode> childNodes = new LinkedList<TreeNode>();
Iterator<TreeNode> it = nodes.iterator();
while(it.hasNext()){
TreeNode node = it.next;
path.append(node.data + ",");
if(node.leftChild != null){
childNodes.add(node.leftChild);
}
if(node.rightChild != null){
childNodes.add(node.rightChild);
}
}
return path.append(visitNodes(childNodes));
}
}