Leetcode#102Binary Tree Level Order Traversal
分析,与题目107非常像,最大的不同是输出结果是自顶向下的,不需要新设计list变量,反向结果,直接输出即可
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
int count(TreeNode x)
{
if(x==null)
return 0;
else
{
int lc=count(x.left);
int rc=count(x.right);
return lc+rc+1;
}
}
int height(TreeNode x)
{
if(x==null)
return 0;
else
{
int lh=height(x.left);
int rh=height(x.right);
if(lh>rh)
return lh+1;
else
return rh+1;
}
}
TreeNode[] queue;
int start=0;
int end=0;
int size=0;
void enqueue(TreeNode x)
{
queue[start]=x;
//if(isEmpty())
// end=(end+1)%size;
start=(start+1)%size;
}
TreeNode outqueue()
{
//start=(start-1)%size;
end=(end+1)%size;
return queue[(end-1)%size];
}
boolean isEmpty()
{
if(end==start)
return true;
else
return false;
}
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> listl=new ArrayList<List<Integer>>();
List<List<Integer>> listend=new ArrayList<List<Integer>>();
size=(count(root)+1)*10;
int H=height(root);
//List<Integer>[] v;
//for(int i=0;i<H;i++)
// v[i]=new ArrayList<Integer>();
queue=new TreeNode[size];
for(int i=0;i<size;i++)
queue[i]=new TreeNode(0);
TreeNode y=null;
enqueue(root);
enqueue(y);
int c=0;
while(!isEmpty())
{
boolean t=false;
List<Integer> l=new ArrayList<Integer>();
TreeNode z=outqueue();
while(z!=null)
{
l.add(z.val);
if(z.left!=null)
{
enqueue(z.left);
t=true;
}
if(z.right!=null)
{
enqueue(z.right);
t=true;
}
z=outqueue();
}
if(!l.isEmpty())
listl.add(l);
if(t)
{
enqueue(y);
c++;
}
}
for(int j=listl.size()-1;j>=0;j--)
listend.add(listl.get(j));
return listl;
}
}
转载于:https://blog.51cto.com/7061299/1642111
Leetcode#102Binary Tree Level Order Traversal相关推荐
- [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)
目录: 1.Binary Tree Level Order Traversal - 二叉树层次遍历 BFS 2.Binary Tree Level Order Traversal II - 二叉树层次 ...
- LeetCode Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- LeetCode N-ary Tree Level Order Traversal(bfs)
问题:给出一个n叉树,输出层次遍历 思路:bfs 具体代码参考: https://github.com/wuli2496/OJ/tree/master/LeetCode/N-ary%20Tree%20 ...
- LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy
本题和上题一样同属于层次遍历,不同的是本题从底层往上遍历,如下: 代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode* left; 4 TreeNode* ...
- [leetcode]Binary Tree Level Order Traversal II
//层次遍历 逆序 public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode r ...
- LeetCode: 107. Binary Tree Level Order Traversal II
题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...
- LeetCode 107. Binary Tree Level Order Traversal II
LeetCode 107. Binary Tree Level Order Traversal II Solution1:我的答案 比102那道题多了一行代码... /*** Definition f ...
- 429. N-ary Tree Level Order Traversal - LeetCode
Question 429. N-ary Tree Level Order Traversal Solution 题目大意: N叉树,返回每层的值,从上到下,从左到右 思路: 利用队列遍历这个N叉树 J ...
- 429. N-ary Tree Level Order Traversal**
429. N-ary Tree Level Order Traversal** https://leetcode.com/problems/n-ary-tree-level-order-travers ...
最新文章
- mysql如何实现读提交锁_MySQL学习笔记(二)—MySQL事务及锁详解
- 安装zabbix4.0(公司内网)
- ACM错误提示/错误原因
- boost::convert模块实现默认转换器的测试程序
- redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本
- SSH集成之导入导出代码示例-页面部分(1)
- 论文|Item2vec中值得品味的8个经典tricks
- matlab练习程序(倾斜校正,透视变换)
- 第四章_思科ASDM网管系统搭建(java环境,jdk环境)
- 【学习中】王者荣耀游戏拆解分析(1)
- python提取句子_关于python:从句子中提取介词短语
- 树莓派B+安装简单版魔镜MagicMirror
- 机器学习系列(13)_PCA对图像数据集的降维_02
- 纪念小企鹅──fcitx
- 我的2018---艰难的一年
- 编码规范汇总【持续更新】
- 20 WebGL使用纹理贴图
- 标品和非标品如何选品,选品的重要性,店铺怎样布局
- c语言用数组存放100以内素数,c语言求素数(c语言输出100以内素数)
- jQuery_01入门