千家信息网

如何分析python二叉树的层次遍历

发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,本篇文章为大家展示了如何分析python二叉树的层次遍历,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。二叉树的层次遍历介绍107. 二叉树的层次遍历 II题目
千家信息网最后更新 2025年12月04日如何分析python二叉树的层次遍历

本篇文章为大家展示了如何分析python二叉树的层次遍历,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

二叉树的层次遍历

介绍

107. 二叉树的层次遍历 II

题目

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如:

给定二叉树 [3,9,20,null,null,15,7]

              3   / \  9  20    /  \   15   7

返回其自底向上的层次遍历为:

[  [15,7],  [9,20],  [3]]
思路
广度优先搜索
  • 树的层次遍历可以使用广度优先搜索实现。从根节点开始搜索,每次遍历同一层的全部节点,使用一个列表存储该层的节点值

  • 如果要求从上到下输出每一层的节点值,做法是很直观的,在遍历完一层节点之后,将存储该层节点值的列表添加到结果列表的尾部。这道题要求从下到上输出每一层的节点值,只要对上述操作稍作修改即可:在遍历完一层节点之后,将存储该层节点值的列表添加到结果列表的头部

代码
/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public List> levelOrderBottom(TreeNode root) {        //结果        List> levelOrder = new LinkedList>();        if(root == null){            return levelOrder;        }        Queue queue = new LinkedList();        queue.offer(root);        //广度搜索        while(!queue.isEmpty()){            List level = new ArrayList();            int size = queue.size();            for(int i = 0; i < size; i++){                TreeNode node = queue.poll();                level.add(node.val);                if(node.left != null){                    queue.offer(node.left);                }                if(node.right != null){                    queue.offer(node.right);                }            }            //每次都插入到第一个位置            levelOrder.add(0,level);        }        return levelOrder;    }}

上述内容就是如何分析python二叉树的层次遍历,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0