加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

LeetCode-102.Binary Tree Level Order Traversal

发布时间:2020-12-14 04:35:59 所属栏目:大数据 来源:网络整理
导读: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,15,7] , 3 / 9 20 / 15 7 return its level order traversal as: [ [3],[9,20],[1

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

    3
   /   9  20
    /     15   7

return its level order traversal as:

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

重点是如何将每层隔开,使用广度优先遍历,时间复杂度为O(n):

 1  public List<List<Integer>> levelOrder(TreeNode root) {//树 BFS my
 2         Queue<TreeNode> queue = new LinkedList<>();
 3         List<List<Integer>> re = new ArrayList<>();
 4         if(null!=root){
 5             queue.add(root);
 6             queue.add(null);
 7         }
 8         while(!queue.isEmpty()&&null!=queue.peek()){//本方法使用null隔开每一层,也可以记录每一层的个数
 9             List<Integer> list = new ArrayList<>();
10             TreeNode cur = queue.poll();
11             while(null!=cur){
12                 list.add(cur.val);
13                 if(null!=cur.left){
14                     queue.add(cur.left);
15                 }
16                 if(null!=cur.right){
17                     queue.add(cur.right);
18                 }
19                 cur=queue.poll();
20             }
21             queue.add(null);
22             if(!list.isEmpty()){
23                 re.add(list);
24             }
25         }
26         return re;
27     }
也可以使用DFS完成

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读