1 定义树节点对象

public class TreeNode {
/**
* 节点属性
/
private String name;
/*
* 子节点
*/
public List children=new ArrayList<>();
  public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public List<TreeNode> getChildren() {
	return children;
}

public void setChildren(List<TreeNode> children) {
	this.children = children;
}
}
  • 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.

2 遍历树

/**
 * 遍历树 从上到下  
 */
public class TreeTraversal {
	public void levelOrderTraversal(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        if (root != null) {
            queue.offer(root);
        } 
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();//出队元素 
            System.out.println(node.getName());
 
            for (TreeNode child : node.children) {
                queue.offer(child);//添加队列元素 
            }
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

3 测试

public class TreeTest {
	public static void main(String[] args) {
		    // 构建一个树
        TreeNode root = new TreeNode();
        root.setName("根节点");
        
        TreeNode treenode21=new TreeNode();
        treenode21.setName("第2层-第1个节点");
        TreeNode treenode31=new TreeNode();
        treenode31.setName("第3层-第1个节点");
        treenode21.getChildren().add(treenode31);
        
        TreeNode treenode22=new TreeNode();
        treenode22.setName("第2层-第2个节点");
        
        root.children.add(treenode21);
        root.children.add(treenode22);
        
        //从上到下顺序遍历树节点
        TreeTraversal treeTraversal = new TreeTraversal();
        treeTraversal.levelOrderTraversal(root);
	}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.