我是靠谱客的博主 大方大炮,最近开发中收集的这篇文章主要介绍领扣LintCode算法问题答案-242. 将二叉树按照层级转化为链表242. 将二叉树按照层级转化为链表鸣谢,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
领扣LintCode算法问题答案-242. 将二叉树按照层级转化为链表
目录
- 242. 将二叉树按照层级转化为链表
- 鸣谢
242. 将二叉树按照层级转化为链表
给一棵二叉树,设计一个算法为每一层的节点建立一个链表。也就是说,如果一棵二叉树有 D 层,那么你需要创建 D 条链表。
样例 1:
输入: {1,2,3,4}
输出: [1->null,2->3->null,4->null]
解释:
1
/
2 3
/
4
样例 2:
输入: {1,#,2,3}
输出: [1->null,2->null,3->null]
解释:
1
2
/
3
/**
* 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> listNodes = new ArrayList<ListNode>();
if (root != null) {
Queue<TreeNode> nodes = new LinkedList<TreeNode>();
nodes.add(root);
ListNode head = new ListNode(0);
while (!nodes.isEmpty()) {
int size = nodes.size();
ListNode lastNode = head;
while (size-- > 0) {
TreeNode treeNode = nodes.poll();
lastNode.next = new ListNode(treeNode.val);
lastNode = lastNode.next;
if (treeNode.left != null) {
nodes.offer(treeNode.left);
}
if (treeNode.right != null) {
nodes.offer(treeNode.right);
}
}
listNodes.add(head.next);
}
}
return listNodes;
}
}
原题链接点这里
鸣谢
非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。
最后
以上就是大方大炮为你收集整理的领扣LintCode算法问题答案-242. 将二叉树按照层级转化为链表242. 将二叉树按照层级转化为链表鸣谢的全部内容,希望文章能够帮你解决领扣LintCode算法问题答案-242. 将二叉树按照层级转化为链表242. 将二叉树按照层级转化为链表鸣谢所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复