输出单层节点
来源:互联网 发布:诱导支付自动赚钱源码 编辑:程序博客网 时间:2024/05/01 06:16
题目
对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。
给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。
实现
public class TreeLevel { public Node getTreeLevel(BinaryTreeNode root, int dep) { if(root==null || dep<1){ return null; } Queue<BinaryTreeNode> queue = new ArrayDeque<BinaryTreeNode>(); queue.add(root); while (!queue.isEmpty() && dep>1){ int len = queue.size(); for(int i=0;i<len;i++){ BinaryTreeNode temp = queue.poll(); if(temp.left!=null){ queue.add(temp.left); } if(temp.right!=null){ queue.add(temp.right); } } dep--; } Node head = new Node(queue.poll().value); Node temp = head; while (!queue.isEmpty()){ temp.next = new Node(queue.poll().value); temp=temp.next; } return head; }public Node getTreeLevel2(BinaryTreeNode root, int dep) { if(root==null || dep<1){ return null; } Queue<BinaryTreeNode> queue = new ArrayDeque<BinaryTreeNode>(); queue.add(root); int current_dep =1; int current_num =1; int next_num =0; BinaryTreeNode current_node = null; while (!queue.isEmpty()){ if(current_dep==dep){ break; } current_node = queue.poll(); current_num--; if(current_node.left!=null){ queue.add(current_node.left); next_num++; } if(current_node.right!=null){ queue.add(current_node.right); next_num++; } if(current_num==0){ current_num = next_num; next_num=0; current_dep++; } } Node head = new Node(queue.poll().value); Node temp = head; while (!queue.isEmpty()){ temp.next = new Node(queue.poll().value); temp=temp.next; } return head; }}class Node { int value; Node next; public Node(int value){ this.value=value; } public Node(){ }}class BinaryTreeNode { int value; BinaryTreeNode left; BinaryTreeNode right; public BinaryTreeNode() { } public BinaryTreeNode(int val) { this.value = val; }}
阅读全文
1 0
- 单层输出节点
- 输出单层节点
- 输出单层节点
- 输出树的单层节点
- 《程序员面试金典》输出单层节点
- 程序员面试金典——输出单层节点
- 程序员面试金典-4.4 输出单层节点
- 输出单层结点
- 牛客网 | 输出单层结点
- 输出单层结点
- 输出单层结点
- 输出单层结点
- 输出树单层结点
- 输出单层结点
- 输出单层结点
- 输出单层结点
- 程序员面试金典:双栈排序、二叉平衡检查、输出单层节点
- 第九天 输出单层结点
- x86 64 内核堆栈
- react-native 新项目bundling failed,TransformError:babel-preset-react-native组件错误
- java面向对象的三大特征:封装,继承,多态
- 查看远程服务端口号
- 希尔排序
- 输出单层节点
- Android Studio中实现Serializable生成serialVersionUID
- 炎炎一夏
- [caioj]1401: 【约束】差分约束系统2:国王 poj1364
- soj:2876: Antimonotonicity_贪心
- uva 12083 二分图匹配
- Linux系统挂载存储只读改成读写
- Java的native方法
- sdut 数据结构实验之栈三:后缀式求值