• 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;
        }
    }
    
    
  • 相关阅读:
    iis环境异常处理
    cmd常用命令:关机、注销、进入d盘等
    position
    Register Form
    第一周
    Django简介
    前端jQuery基本语法
    前端基础BOM和DOM
    HTML常用标签
    Linux相关 MySQL相关
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7709608.html
Copyright © 2020-2023  润新知