算法小练——二叉树的层次遍历


title: 算法小练——二叉树的层次遍历
date: 2019-11-21 22:06:50
categories:

  • Algorithms
    tags:
  • easy

二叉树的层次遍历

描述

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

示例

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
      /  \
    15   7

返回其层次遍历结果:

[
[3],
[9,20],
[15,7]
]

代码

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
class Solution {
   List<List<Integer>> levels = new ArrayList<>();  
	 public List<List<Integer>> levelOrder(TreeNode root) {
		 if(root==null) {
			 return levels;
		 }
	      helper(root,0);
	      
	      return levels;
     }
	 public void helper(TreeNode node,int level) {
 		 
 		 if(levels.size()==level) {
 			 levels.add(new ArrayList<Integer>());
 		 }
         //将同一层次的节点存储到同一个数组中的操作
 		 levels.get(level).add(node.val);
 		 if(node.left!=null) {
 			 helper(node.left,level+1);
 		 }
 		 if(node.right!=null) {
 			 helper(node.right,level+1);
 		 }
 	 }
}

笔记

递归的难度主要是如何保证将同一层的节点存储到同一个数组中去,这个算法中,利用了ArrayList有序的特性,并通过get方法与add方法来实现了,定位存储。

全部评论

相关推荐

Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务