Technology sharing

Arbor traversal level

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Arboris traversalis hierarchica significat modum traversalem, qui omnes nodos in arbore in ordine hierarchico visitat. Gradus specifici sunt hoc modo;

  1. Incipiens ab radice nodi, enqueue nodi radicis.
  2. Loop usque ad queue vacua est;
    • Pops nodi a queue et accessu eius.
    • Enqueue omnes nodos pueri huius nodi in ordine.
  3. Perficere traversal.

Scientia habet puncta de gradu traversal:

  1. Queue: Hierarchicus traversalis usum a queue requirit ad nodi temporarie reponunt. Singulis diebus nodi accesserunt, eius infantes nodi in queue immittuntur, et caput queue nodi accipitur pro accessu in proximo cyclo.
  2. Loop: Level traversal operationem ansam requirit donec queue vacua est. Per fascias, nodi continue adduntur et detrahuntur donec omnes nodi percurruntur.
  3. Accessus nodi: Accessus ad nodi determinari potest secundum necessitates, potest nodi imprimere valorem vel alias operationes exercere.
  4. Nodi puerilis nuntiantes: Hierarchicus traversalis postulat ut omnes nodi pueri singulorum nodi persequantur ut accessus in subsequentibus loramenta perseveret.

Idea:

  1. Primum, radicem nodi crea queue et enqueue.
  2. Loop usque ad queue vacua est;
    • Pops nodi a queue et accessu eius.
    • Enqueue omnes nodos pueri huius nodi in ordine.
  3. Perficere traversal.

Haec idea clavis est ad exsequendam hierarchicam traversalem usum queues. Quoties nodi ligantur et accessiuntur, nodi pueri eius obveniuntur, ita ut in ordine hierarchico accessus prospiciatur.

exemplum:

102. Level-ordo traversal binarii ligno

Da tibi radicem nodi ligni binariirootRedit nodi valorem suumgradus ordinis traversal . (i.e. visitare omnes nodos iacuit, a sinistro ad dextrum).

Exemplum 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

Exemplum II:

输入:root = [1]
输出:[[1]]

Exemplum III:

输入:root = []
输出:[]
  1. // 层序遍历二叉树并返回结果列表
  2. public List<List<Integer>> levelOrder(TreeNode root) {
  3. List<List<Integer>> lists = new ArrayList<>(); // 用于存储层序遍历结果的列表
  4. Queue<TreeNode> queue = new LinkedList<>(); // 辅助队列,用于层序遍历
  5. if (root == null) {
  6. return new ArrayList<List<Integer>>(); // 如果根节点为空,直接返回空列表
  7. }
  8. queue.add(root); // 将根节点加入队列
  9. while (!queue.isEmpty()) {
  10. int size = queue.size(); // 当前层的节点数
  11. List<Integer> list = new ArrayList<>(); // 用于存储当前层节点值的列表
  12. for (int i = 0; i < size; i++) {
  13. TreeNode node = queue.poll(); // 出队列
  14. list.add(node.val); // 将节点值加入当前层列表
  15. // 将当前节点的左右子节点加入队列,以便遍历下一层
  16. if (node.left != null) {
  17. queue.add(node.left);
  18. }
  19. if (node.right != null) {
  20. queue.add(node.right);
  21. }
  22. }
  23. lists.add(list); // 将当前层的节点值列表加入最终结果列表
  24. }
  25. return lists; // 返回层序遍历结果列表
  26. }