leetcode----给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历)

news/2024/7/19 12:37:48 标签: 二叉树, 队列, 列表, 数据结构, java

知识点:

1.list.add(下标,值)。

每次在下标0处插入元素时,自动将列表中的元素后移

例如,依次向列表中的0位置插入12 13 14

import java.util.ArrayList;

public class TestOne {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(0,12);
		for(int i=0;i<list.size();i++) {
			System.out.println("插入值12。 下标:"+i+" 值:"+list.get(i));
		}
		System.out.println("-----------");
		list.add(0,13);
		for(int i=0;i<list.size();i++) {
			System.out.println("插入值13。 下标:"+i+" 值:"+list.get(i));
		}
		System.out.println("-----------");
		list.add(0,14);
		for(int i=0;i<list.size();i++) {
			System.out.println("插入值14。 下标:"+i+" 值:"+list.get(i));
		}
		System.out.println("-----------");
	}

}

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     思路: 通过队列和栈来实现
         1. 从根节点开始,按从右向左的顺序,对二叉树进行层次遍历
         2. 将访问的结果放入栈中(从右至左,从上到下)
         3. 最后,将栈中的所有元素出栈,得到逆序的遍历结果(从左至右,从下到上)
     */
    public ArrayList<ArrayList<Integer>> levelOrderBottom (TreeNode root) {
        //1.创建列表数组
        ArrayList<ArrayList<Integer>> AllList = new ArrayList<>();
        //2.树为空
        if(root==null){
            return AllList;
        }
        //3.创建list列表,类似于队列。
        ArrayList<TreeNode> list = new ArrayList<>();
        list.add(root);//先将根节点加入列表
        while(list.size()!=0){ //队列不为空
            //存放当前层遍历的结果
            ArrayList<Integer> l = new ArrayList<>();
            int size = list.size(); //当前层的结点数目
            for(int j=0;j<size;j++){//遍历当前层的结点,并将其所有的孩子结点放入list
                TreeNode node = list.remove(0);//获取list中的第一个元素,并从list删除
                l.add(node.val);
                if(node.left!=null) list.add(node.left);
                if(node.right!=null) list.add(node.right);
            }//for
            //将当前层的遍历结果 放入结果集中的第一个位置
            AllList.add(0,l);
        }//for
        return AllList;
    }
}


http://www.niftyadmin.cn/n/1023913.html

相关文章

Hbase Replication 介绍

分类&#xff1a; hbase 2012-12-26 14:13 1011人阅读 评论(0)收藏举报hbaseHBASE服务器集群目录(?)[] Hbase Replication 介绍现状常用的在线备份方案及其比较原理 Replication 总体结构Replication 工作流程Replication Class 简介Replication Zookeeper上的结构Replicatio…

POJ-1459 Power Network

题目大意&#xff1a; 这道题目意思不好理解&#xff08;可能只是我理解太差...&#xff09; 一个电网&#xff0c;里面有一些结点&#xff0c;代表电站&#xff0c;消费者&#xff0c;调度站。电站不消耗电能&#xff0c;消费者不产生电能&#xff0c;调度站产生的电能和消耗的…

java下拉框填写省市县_下拉框选择省市区

html:--请选择----请选择----请选择--css:body {}js:/// var aProvince ["河北省", "山西省", "湖北省"];//aProvince[0]; 河北省//aProvince[1]; 山西省var aCity [["石家庄市", "张家口市", "承德市", "…

mysq集合差操作_MySQL中集合的差的运算方法

MySql只支持Union(并集)集合运算&#xff0c;好像也是4.0以后才有的&#xff1b;但是对于交集Intersect、差集Except&#xff0c;就没有实现了。一般的解决方案用in和not in来解决&#xff0c;小量数据还可以&#xff0c;但数据量大了效率就很低了。其实&#xff0c;可以使用Un…

黑马java莱布尼茨_俄罗斯和德国发现癌症诊疗黑马 硅纳米颗粒

材料牛注&#xff1a;癌症患者的福音来啦&#xff0c;还在为癌症治疗而带来的副作用而忧心忡忡吗?不要怕&#xff0c;最近&#xff0c;科学家们发现了一种既可以治疗癌症又对人的身体没有任何伤害的纳米颗粒——硅纳米颗粒。当谈到癌症治疗时&#xff0c;我们的首选方案会是用…

Project和Task

Projects和Tasks 在gradle中&#xff0c;所有的事物都基于两个概念&#xff1a;projects和tasks。 每一个gradle的构建系统都由一个或多以project组成。例如一个project可以表示一个jar包或者一个web app的构建。又或者是一个android应用的编译打包。 每一个project都由一个或若…

2013省赛----振兴中华

public class TestOne {public static void main(String[] args) {int count f(0,0);System.out.println(count);}private static int f(int i, int j) {// TODO Auto-generated method stubif(i3 || j4) {return 1;}return f(i,j1)f(i1,j);}}

rs485接口上下拉_详解RS-485上下拉电阻的选择 - 全文

RS-485总线广泛应用于通信、工业自动化等领域&#xff0c;在实际应中&#xff0c;通常会遇到是否需要加上下拉电阻以及加多大的电阻合适的问题&#xff0c;下面我们将对这些问题进行详细的分析。为什么需要加上下拉电阻&#xff1f;根据RS-485标准&#xff0c;当485总线差分电压…