package suanfa.tree;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.LinkedBlockingDeque;
/**
二叉树的层序遍历
/
public class LevelOrder {/**
二叉树的层序遍历 依赖queue实现
@param root
@return
/
public static List<List<integer>> levelOrder(TreeNode root) {
List<List<integer>> list = new ArrayList<>();</integer></integer>Queue<treenode> queue = new LinkedBlockingDeque<>();
queue.add(root);</treenode>while (!queue.isEmpty()) {
List<Integer> subList = new ArrayList<>(); int currentLevelSize = queue.size(); //遍历每一层 for (int i = 1; i < currentLevelSize; i++) { TreeNode tmpNode = queue.poll(); subList.add(tmpNode.val); if (tmpNode.left != null) { queue.offer(tmpNode.left); } if (tmpNode.right != null) { queue.offer(tmpNode.right); } } list.add(subList);}
return list;
}
static class TreeNode {
int val;
TreeNode left;
TreeNode right;
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}}

京公网安备 11010502036488号