zoukankan      html  css  js  c++  java
  • lintcode242- Convert Binary Tree to Linked Lists by Depth- easy

    Given a binary tree, design an algorithm which creates a linked list of all the nodes at each depth (e.g., if you have a tree with depth D, you'll have D linked lists).

    Example

    Given binary tree:

        1
       / 
      2   3
     /
    4
    

    return

    [
      1->null,
      2->3->null,
      4->null
    ]

    BFS+queue,层级遍历while,套for层内点处理。这种ListNode但只要存储第一个点可用dummy的小技巧。

    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    public class Solution {
        /**
         * @param root the root of binary tree
         * @return a lists of linked list
         */
        public List<ListNode> binaryTreeToLists(TreeNode root) {
            // Write your code here
            List<ListNode> result = new ArrayList<ListNode>();
            if (root == null) {
                return result;
            }
            
            Queue<TreeNode> queue = new LinkedList<TreeNode>();
            queue.offer(root);
            
            while (!queue.isEmpty()) {
                int size = queue.size();
                ListNode dummy = new ListNode(-1);
                ListNode prev = dummy;
                for (int i = 0; i < size; i++) {
                    TreeNode treeNode = queue.poll();
                    ListNode crtNode = new ListNode(treeNode.val);
                    prev.next = crtNode;
                    prev = crtNode;
                    if (treeNode.left != null) {
                        queue.offer(treeNode.left);
                    }
                    if (treeNode.right != null) {
                        queue.offer(treeNode.right);
                    }
                }
                result.add(dummy.next);
            }
            return result;
        }
    }
    
    
  • 相关阅读:
    (项目)在线教育平台(九)
    (项目)在线教育平台(八)
    界面渐变特效 -- CSS实现 -- 兼容IE8
    固定背景图片铺满浏览器窗口
    时间连带上下午
    慢显示动画
    CSS强制英文、中文换行与不换行 强制英文换行
    html5 标签在 IE 下使用
    html5 兼容版本 video
    添加到收藏夹
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7709608.html
Copyright © 2011-2022 走看看