/**
*@author macro
*@description 二叉树-层序遍历
*@param root:根节点
*@return {@link List< List< Integer>>} 每一层的节点值
*/
public List<List<Integer>> levelOrder(TreeNode root) {
//队列(存放遍历行的所有节点)
LinkedList<TreeNode> queue = new LinkedList<>();
//返回值
List<List<Integer>> resList = new ArrayList<>();
//根节点非空加入到队列
if(null != root)queue.add(root);
/*循环处理*/
while (!queue.isEmpty()){
//当前层所有节点的值列表
ArrayList<Integer> thisNodeValList = new ArrayList<>();
/*循环 从队列中拿到当前的所有节点*/
for (int i = queue.size(); i >0 ; i--) {
//逐个移除并返回当前层的节点
TreeNode poll = queue.poll();
thisNodeValList.add(poll.val);
//如果当前节点的左右有则加入到队列
if(null != poll.left)queue.add(poll.left);
if(null != poll.right)queue.add(poll.right);
}
//for循环结束 遍历完当前层
resList.add(thisNodeValList);
}
return resList;
}
二叉树之层序遍历
最新推荐文章于 2024-07-07 19:55:37 发布