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

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

2021/6/6

今日题目(剑指Offer系列)

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

示例:

例如:
给定二叉树: [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
返回:
[3,9,20,15,7]

解题思路:

>其实这就是层序遍历,将二叉树的每层进行按顺序遍历
>使用队列,队列具有先进先出的性质
>将根节点入队,判读队列是否为空,
>如果不为空,判断队列第一个元素的左右子树是否为空,
>如果不为空,将其入队,然后将第一个节点出队
>又因为二叉树不会回环重复,所以直接出队即可,不需考虑重复现象

Python解法:

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

        while queue:
            tmp=queue.pop(0)
            res.append(tmp.val)
            
            if tmp.left:
                queue.append(tmp.left)
            if tmp.right:
                queue.append(tmp.right)

        return res

Java解法:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海洋 之心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值