LeetCode Binary Tree Level Order Traversal

来源:互联网 发布:团队协作软件 编辑:程序博客网 时间:2024/06/13 23:51

Description:

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its level order traversal as:

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

Solution:

因为要按照level来分层,所以适合用BFS。可以用两种方法,一是在TreeNode类中添加一个表示层次level的int变量;二是重新写一个类,包含了TreeNode以及level;三是像如下的代码中展示的,在BFS的同时记录level的链表。

import java.util.*;public class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> list = new ArrayList<List<Integer>>();LinkedList<TreeNode> nodes = new LinkedList<TreeNode>();LinkedList<Integer> layers = new LinkedList<Integer>();int preLayer = -1;nodes.add(root);layers.add(0);TreeNode node;int layer;ArrayList<Integer> array = new ArrayList<Integer>();while (!nodes.isEmpty()) {node = nodes.pop();layer = layers.pop();if (node == null)continue;if (layer == preLayer) {array.add(node.val);} else {preLayer = layer;array = new ArrayList<Integer>();list.add(array);array.add(node.val);}nodes.add(node.left);nodes.add(node.right);layers.add(layer + 1);layers.add(layer + 1);}return list;}}


0 0
原创粉丝点击