leetcode - Binary Tree Level Order Traversal

来源:互联网 发布:钱咖返利数据为空 编辑:程序博客网 时间:2024/06/14 15:43

题目:

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]
]

解法:

类似图的广度优先搜索BFS

public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {    if(root == null)    return null;    ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();    LinkedList<TreeNode> queue = new LinkedList<TreeNode>();    queue.add(root);    ArrayList<Integer> list = new ArrayList<Integer>();    int curNum = 0;    int lastNum = 1;    while(!queue.isEmpty()){    TreeNode cur = queue.poll();    list.add(cur.val);    --lastNum;    if(cur.left != null){    queue.add(cur.left);    ++curNum;    }    if(cur.right != null){    queue.add(cur.right);    ++curNum;    }    if(lastNum == 0){    res.add(list);    lastNum = curNum;    curNum = 0;    list = new ArrayList<Integer>();    }    }    return res;}


0 0