第107题:二叉树的层次遍历II
2024-09-05 03:37:34
一. 问题描述
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
二. 解题思路
本题思路:采用层序遍历和递归的方法进行求解。
步骤一:构建递归函数(全局变量list表存储结果数据,局部表data存储当前一层所有节点)
步骤二:对data表进行遍历,将其子树存储在newdata表中,并进行递归(list,newdata)。
步骤三:当在最底层时,将newdata节点数存储在list表中,并返回上一层接着存储,直到结束。
步骤四:返回list表。
三. 执行结果
执行用时 :1 ms, 在所有 java 提交中击败了100.00%的用户
内存消耗 :36.4 MB, 在所有 java 提交中击败了41.70%的用户
四. Java代码
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(root==null) {
return list;
}else {
List<TreeNode> data=new ArrayList<TreeNode>();
data.add(root);
getTree(list,data);
return list;
}
}
public void getTree(List<List<Integer>> list,List<TreeNode> data) {
if(data.size()==0) {
return ;
} List<TreeNode> newdata=new ArrayList<TreeNode>();
List<Integer> temp=new ArrayList<Integer>();
for(int i=0;i<data.size();i++) {
if(data.get(i).left!=null) {
newdata.add(data.get(i).left);
}
if(data.get(i).right!=null) {
newdata.add(data.get(i).right);
}
temp.add(data.get(i).val);
}
getTree(list, newdata); list.add(temp);
} }
最新文章
- 使用 SSH上传安装tomcat
- WPF 将DLL嵌入EXE文件(安装包)
- 如何获取Iframe的页面控件的值
- C/C++ 关于大小端模式
- 浏览器检测是否安装flash插件,若没有安装,则弹出安装提示
- 4月13日 php
- Apache2.4.x与Apache2.2.x的一些区别
- C# 对象池的实现
- PHP修改记录
- [Tyvj模拟赛]运
- [国嵌笔记][013][Mini2440开发板介绍]
- 【mongodb系统学习之十】mongodb查询(三)
- JSON字符串反序列化成对象_部分属性值反序列化失败
- JavaScript笔记1———js的一些常识
- Solidity-让合约地址 接受ETH的转账充值的 三种方式
- 服务器上部署Struts2的web项目报struts-default.xml:131:154的解决方法
- C++ 虚函数的两个例子
- K8S 部署 ingress-nginx (三) 启用 https
- for循环的简介及break和continue的区别
- Java笔记(七)HashMap和HashSet