二叉树的广度优先遍历

来源:互联网 发布:常用排序算法包括 编辑:程序博客网 时间:2024/05/22 05:20
package com.dengpf.BinaryTreeLevelOrderTraversal;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution {    List<List<Integer>> rlist = new ArrayList<List<Integer>>();    private Queue<TreeNode> queue = new LinkedList<TreeNode>();    public List<List<Integer>> levelOrder(TreeNode root) {        if (root == null) {            return rlist;        }        queue.offer(root);        while (true) {            int length = queue.size();            if (length == 0) {                break;            }            List<Integer> innerList = new ArrayList<Integer>();            while (length > 0) {                TreeNode headNode = queue.poll();                innerList.add(headNode.val);                if (headNode.left != null) {                    queue.offer(headNode.left);                }                if (headNode.right != null) {                    queue.offer(headNode.right);                }                length--;            }            rlist.add(innerList);        }        return rlist;    }}

0 0