package NC;
import java.util.*;
/**
* NC15 求二叉树的层序遍历
*
* 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
* 例如:
* 给定的二叉树是{3,9,20,#,#,15,7},
*
* @author Tang
* @date 2021/9/27
*/
public class LevelOrder {
Map<Integer, ArrayList<Integer>> tempMap = new HashMap<>();
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
postSearch(root, 0);
ArrayList<ArrayList<Integer>> resultList = new ArrayList<>();
for(int i = 0; i < tempMap.size(); i++) {
ArrayList<Integer> list = tempMap.get(i);
resultList.add(list);
}
return resultList;
}
/**
* 后序遍历
*/
private void postSearch(TreeNode node, int ceng) {
if(node == null) {
return;
}
postSearch(node.left, ceng+1);
postSearch(node.right, ceng+1);
//在特定层数的arrayList添加
if(tempMap.get(ceng) == null) {
ArrayList<Integer> arrayList = new ArrayList<>();
tempMap.put(ceng, arrayList);
}
tempMap.get(ceng).add(node.val);
}
public static void main(String[] args) {
TreeNode treeNode1 = new TreeNode(3);
TreeNode treeNode2 = new TreeNode(9);
TreeNode treeNode3 = new TreeNode(20);
TreeNode treeNode4 = new TreeNode(15);
TreeNode treeNode5 = new TreeNode(7);
treeNode1.left = treeNode2;
treeNode1.right = treeNode3;
treeNode3.left = treeNode4;
treeNode3.right = treeNode5;
ArrayList<ArrayList<Integer>> arrayLists = new LevelOrder().levelOrder(treeNode1);
}
}
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
NC15 求二叉树的层序遍历
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
二叉树的层序遍历
时间复杂度:空间复杂度:
python 空间复杂度 复杂度 Code -
【二叉树】二叉树的层序遍历 II
题目给定一个二叉树返回其节点值 自底向上 的层序遍历即按从叶子节点
swift 层序遍历 算法 二叉树 ios -
python 层遍历 二叉树 二叉树的层序遍历python
二叉树的层序遍历 II给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
python 层遍历 二叉树 算法 数据结构 深度优先 层序遍历 -
队列 遍历二叉树java 队列层序遍历二叉树
二叉树的遍历二叉树的遍历分先序、中序、后序和层次遍历。实现方式分递归和非递归方式。这里说说层次遍历。
队列 遍历二叉树java 二叉树 数组 层次遍历