输出单层结点

来源:互联网 发布:手机荧光字软件 编辑:程序博客网 时间:2024/05/01 17:44

对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。

给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。

<分析>:使用层序遍历,每遍历一层,dep--;当dep==1时,就遍历到了dep层,就可以停止遍历了。

               开始将队列中剩下的结点放入到链表中。

               Queue队列使用LinkedList

               入队offer 出队poll   判断是否为空isEmpty()   判断尺寸size()

import java.util.*;/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*//*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class TreeLevel {    public ListNode getTreeLevel(TreeNode root, int dep) {        // write code here        Queue<TreeNode> queue = new LinkedList<>();        queue.offer(root);        while(dep>1 && !queue.isEmpty()){int len = queue.size();            for(int i=0;i<len;i++){                TreeNode node = queue.poll();                if(node.left!=null){                    queue.offer(node.left);                }                if(node.right!=null){                    queue.offer(node.right);                }            }            dep--;        }        ListNode node = new ListNode(queue.poll().val);        ListNode temp = node;        while(!queue.isEmpty()){            temp.next=new ListNode(queue.poll().val);            temp = temp.next;        }        return node;    }}


原创粉丝点击