【LeetCode每日一题】剑指 Offer 32 - II. 从上到下打印二叉树 II(持续更新)

不要自卑,去提升实力
互联网行业谁技术牛谁是爹
如果文章可以带给你能量,那是最好的事!请相信自己
加油o~

2021/6/6

今日题目(剑指Offer系列)

剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

示例:

例如:
给定二叉树: [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
返回其层次遍历结果:
[
  [3],
  [9,20],
  [15,7]
]

解题思路:

>改问题的本质还是层序遍历
>只不过是把每层遍历的节点存到一个小列表里面
>最终将每一层的小列表存到一个到大列表
>这时就需要一个size来控制每层的数量
>在每层需要遍历size次,将该层的节点全部遍历

Python解法:

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        
        queue=[root]
        res=[]

        while queue:
            layer=[]
            size=len(queue)

            for i in range(size):
                tmp=queue.pop(0)
                layer.append(tmp.val)
                if tmp.left:
                    queue.append(tmp.left)
                if tmp.right:
                    queue.append(tmp.right)
            
            res.append(layer)
        
        return res

Java解法:

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        if(root==null) {
			return new ArrayList();
		}
		Queue<TreeNode> queue=new LinkedList<TreeNode>();
		
		queue.add(root);
		
		List<List<Integer>> list=new ArrayList();
		
		while(!queue.isEmpty()) {
			int size=queue.size();
			
			List<Integer> l=new ArrayList<Integer>();
			for(int i=0;i<size;i++) {
				TreeNode tmp=queue.poll();
				l.add(tmp.val);
				if(tmp.left!=null) {
					queue.add(tmp.left);
				}
				if(tmp.right!=null) {
					queue.add(tmp.right);
				}
			}
			
			list.add(l);
		}
		
		return list;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海洋 之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值