#求二叉树的层序遍历_Java版 @FDDLC
发布日期:2021-06-30 20:56:48 浏览次数:2 分类:技术文章

本文共 1739 字,大约阅读时间需要 5 分钟。

给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)

例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]

 

AC的代码(Java版)

import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val, TreeNode left, TreeNode right) {        this.val = val;        this.left = left;        this.right = right;    }}public class Solution {    public ArrayList
> levelOrder(TreeNode root) { ArrayList
> answer = new ArrayList<>(); if (root == null) return answer; LinkedList
treeNodes = new LinkedList<>(); treeNodes.add(root); while (!treeNodes.isEmpty()) { int levelSize = treeNodes.size(); ArrayList
levelValues = new ArrayList<>(); for (int i = 0; i < levelSize; i++) { TreeNode currentNode = treeNodes.poll(); //get and remove the first one levelValues.add(currentNode.val); if (currentNode.left != null) treeNodes.add(currentNode.left); //add to the end if (currentNode.right != null) treeNodes.add(currentNode.right); } answer.add(levelValues); //遍历完一层 } return answer; } public static void printAnswer(ArrayList
> answer) { int rowSum = answer.size(); for(int rowIndex = 0; rowIndex < rowSum; rowIndex++) { System.out.println(Arrays.toString(answer.get(rowIndex).toArray())); } } public static void main(String[] args) { TreeNode node5 = new TreeNode(5, null, null); TreeNode node4 = new TreeNode(4, null, null); TreeNode node3 = new TreeNode(3, node4, node5); TreeNode node2 = new TreeNode(2, null, null); TreeNode node1 = new TreeNode(1, node2, node3); printAnswer(new Solution().levelOrder(node1)); }}

转载地址:https://liuxingchang.blog.csdn.net/article/details/109095758 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:#两数之和_Java版 @FDDLC
下一篇:#两个链表的第一个公共结点_Java版 @FDDLC

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月15日 09时55分27秒