【 二叉树的层序遍历】

简介: 【 二叉树的层序遍历】

正文


简介【 二叉树的层序遍历】【这个二叉树的遍历有一些不同啊,我们一起看看】


题目描述#


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

示例:


二叉树:[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; }
 * }
 */
import java.util.*;
class Solution {
       TreeNode nullNode = new TreeNode(Integer.MAX_VALUE);
    public List<List<Integer>> levelOrder(TreeNode root) {
        ArrayDeque<TreeNode> queue = new ArrayDeque<>(16);
        List<List<Integer>> returnList = new ArrayList<>();
        List<Integer> item = null;
        if (null != root) {
            queue.push(root);
            queue.push(nullNode);
            while (null != root || !queue.isEmpty()) {
                TreeNode treeNode = queue.pollLast();
                if (null != treeNode && Integer.MAX_VALUE != treeNode.val) {
                    if (null != treeNode.left) {
                        queue.push(treeNode.left);
                    }
                    if (null != treeNode.right) {
                        queue.push(treeNode.right);
                    }
                    if (Integer.MAX_VALUE != treeNode.val) {
                        if(null==item){
                            item=new ArrayList<>();
                        }
                        item.add(treeNode.val);
                    }
                    if (!queue.isEmpty()) {
                        TreeNode last = queue.getLast();
                        if (null != last && last.val == Integer.MAX_VALUE) {
                            queue.pollLast();
                            queue.push(nullNode);
                            returnList.add(item);
                            item=null;
                        }
                    }
                }else {
                    root=null;
                }
            }
        }
        return returnList;
    }
}


运行结果#


13.jpg


相关文章
|
4天前
|
存储 算法 Java
二叉树层序遍历
二叉树层序遍历
12 0
|
4天前
|
算法
【二叉树】层序遍历
【二叉树】层序遍历
37 0
|
7月前
【LeetCode】102. 二叉树的层序遍历、107. 二叉树的层序遍历 II
102. 二叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点) 示例:
29 0
|
7月前
|
存储
|
1天前
|
存储 C++
二叉树
二叉树 “【5月更文挑战第18天】”
15 6
|
9月前
二叉树的讲解
1.若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1) 个结点. 2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是 2^h-1. 3. 对任何一棵二叉树, 如果度为0其叶结点个数为n0 , 度为2的分支结点个数为02 ,则有n0 =n2 +1 4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h= . (ps: 是log以2为底,n+1为对数) 5. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的结点有:
二叉树的讲解
|
10月前
二叉树(详解)下
二叉树(详解)
40 0
|
7月前
【二叉树】
【二叉树】
30 0
|
7月前
|
存储
二叉树的相关列题!!
二叉树的相关列题!!
46 0
|
9月前
|
存储
二叉树_详解
二叉树的详解