- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7].
3
/ \
9 20
/ \
15 7
返回: [3,9,20,15,7] 。
提示: 节点总数 <= 1000 。
作者:Krahets 链接: https://leetcode.cn/leetbook/read/illustration-of-algorithm/9ackoe/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处.
题目要求打印节点,且是按照每层从左往右的顺序打印,实际上是需要实现层次遍历。 层次遍历需要用到队列这个数据结构,在这里我们使用 LinkedList 数据结构模拟队列。 基本的求解过程即:
要注意两点:
ArrayList<Integer>
实现不定长数组,然后将 ArrayList<Integer>
转化为 int[]
,如何转化可参考 此篇博文
//LinkedList
LinkedList<E> listname=new LinkedList<E>();//初始化
LinkedList.add(elment);//在链表尾部添加元素
LinkedList.removeFirst();//取出链表头部元素
LinkedList.size();//获取元素个数
//ArrayList
ArrayList<E> listname=new ArrayList<E>();//初始化
ArrayList.add(elment);//在数组最后插入元素
ArrayList.stream().mapToInt(Integer::valueOf).toArray();//ArrayList<Integer>转为int[]
ArrayList.toArray();//Arraylist转为数组,适用于String--char[]
//int[]
arrayname=new ElementType[size];//创建大小为size的数组,元素类型为ElementType
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
//树节点的遍历问题——层次遍历--队列
class Solution {
public int[] levelOrder(TreeNode root) {
ArrayList<Integer> result_list = new ArrayList<Integer>();//结果数组
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();//队列
if(root!=null){
queue.add(root);
}
while(queue.size()!=0){
TreeNode temp=queue.removeFirst();
if(temp.left!=null){
queue.add(temp.left);
}
if(temp.right!=null){
queue.add(temp.right);
}
result_list.add(temp.val);
}
return result_list.stream().mapToInt(Integer::valueOf).toArray();
}
}
最后此篇关于剑指Offer32-I.从上到下打印二叉树(java解题)的文章就讲到这里了,如果你想了解更多关于剑指Offer32-I.从上到下打印二叉树(java解题)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
一、题目 给定一个字符串 s ,请计算这个字符串中有多少个回文子字符串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的 子串。 二、示例 输入:s = "abc" 输出
题目: 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], list
题目: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4
题目: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val =
题目 题目分析 题目给我们的链表,是一个无线循环的链表。【形成一个“环”】 要求我们 在不影响原先升序的情况下,插入一个指定 val 值 的节点。 返回值还是返回 题目给的 head。 解题思维 要求
我是一名优秀的程序员,十分优秀!