题目:
二叉树,广度优先遍历:结果1234567
思路:
1 节点1进队,节点1出队,访问节点1
2 节点1的孩子节点2进队,节点3进队
3 节点2出队,访问节点2,节点2的孩子节点4进队,节点5进队
4 节点3出队,访问节点3,节点3的孩子节点6进队,节点7进队
5 节点4出队,访问节点4,节点4没有孩子节点
6 节点5出队,访问节点5,节点5没有孩子节点
7 节点6出队,访问节点6,节点6没有孩子节点
8 节点7出队,访问节点7,节点7没有孩子节点,结束

1.代码如下:
1.1TreeNode .java
package com.yuhl.right.tree1;
public class TreeNode {
int data;
TreeNode leftNode;
TreeNode rightNode;
public TreeNode() {
}
public TreeNode(int d) {
data=d;
}
public TreeNode(TreeNode left,int d,TreeNode right) {
leftNode=left;
rightNode=right;
data=d;
}
}
1.2TreeNodeTest.java
package com.yuhl.right.tree1;
import java.util.LinkedList;
import java.util.Queue;
public class TreeNodeTest {
public static void main(String[] args) {
TreeNode node7=new TreeNode(7);
TreeNode node6=new TreeNode(6);
TreeNode node5=new TreeNode(5);
TreeNode node4=new TreeNode(4);
TreeNode node3=new TreeNode(node6,3,node7);
TreeNode node2=new TreeNode(node4,2,node5);
TreeNode head=new TreeNode(node2,1,node3);
System.out.print("广度优先遍历结果:");
broadFirstSearch(head);
}
public static void broadFirstSearch(TreeNode nodeHead) {
if(nodeHead==null) {
return;
}
Queue<TreeNode> queue=new LinkedList<>();
queue.add(nodeHead);
while(!queue.isEmpty()) {
TreeNode node=queue.poll();
System.out.print(node.data+" ");
if(null!=node.leftNode) {
queue.add(node.leftNode);
}
if(null!=node.rightNode) {
queue.add(node.rightNode);
}
}
}
}
2.执行结果:
广度优先遍历结果:1 2 3 4 5 6 7