LeetCode-102. Binary Tree Level Order Traversal

来源:互联网 发布:华为硬件单片机笔试题 编辑:程序博客网 时间:2024/06/18 14:52

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,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]

方法一

迭代实现

借助一个队列实现。

思路

  1. 首先将根节点存入队列中。
  2. 在取出队列中的首元素前,需要判断该元素是否有左右孩子,如果该元素有左右孩子,则将其左右孩子存入队列中,再将队列的首元素取出存入用来保存每一层的List中。
  3. 需要一个变量来记录当前层的总节点数,以此来决定步骤2的重复次数。
/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res=new ArrayList<List<Integer>>();        if(root==null)            return res;        Queue<TreeNode> queue=new LinkedList<>();        queue.add(root);        while(!queue.isEmpty())        {            List<Integer> tempList=new ArrayList<>();            int levelNum=queue.size();            for(int i=0;i<levelNum;++i)            {                if(queue.peek().left!=null)                    queue.add(queue.peek().left);                if(queue.peek().right!=null)                    queue.add(queue.peek().right);                tempList.add(queue.poll().val);            }            res.add(tempList);        }        return res;    }}

方法二

递归实现

递归时需要有个变量来记录当前递归到的层数,以此来决定在返回结果哪个一维数组中添加数值。
整个过程类似二叉树的先序遍历。

class Solution {    public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res=new ArrayList<List<Integer>>();        levelOrderHelper(root,res,0);        return res;    }    private void levelOrderHelper(TreeNode root,List<List<Integer>> res,int height)    {        if(root==null)            return;        if(height>=res.size())            res.add(new ArrayList<Integer>());        res.get(height).add(root.val);        levelOrderHelper(root.left,res,height+1);        levelOrderHelper(root.right,res,height+1);    }}
阅读全文
0 0
原创粉丝点击