问题描述

You need to find the largest element in each row of a Binary Tree.

Example:
Input: 

      1
/ \
2 3
/ \ \
5 3 9 Output: [1, 3, 9]

算法分析

使用两个队列,逐层遍历二叉树的各个节点,每个队列中的节点都是同一层的节点,在遍历一层时,找出该层最大的节点值加入ArrayList中。

Java算法实现:

/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int[] findValueMostElement(TreeNode root) {
if(root==null){
int[] tmp=new int[0];
return tmp;
}
ArrayList<Integer>arr=new ArrayList<>();
Queue<TreeNode>que1=new LinkedList<>();
Queue<TreeNode>que2=new LinkedList<>();
que1.add(root);
int max;
while(!que1.isEmpty()||!que2.isEmpty()){
max=Integer.MIN_VALUE;
if(!que1.isEmpty()){
while(!que1.isEmpty()){
TreeNode node=que1.poll();
if(node.val>max){ //找到该层的最大值
max=node.val;
}
if(node.left!=null){
que2.add(node.left);
}
if(node.right!=null){
que2.add(node.right);
}
}
arr.add(max);
}
else if(!que2.isEmpty()){
while(!que2.isEmpty()){
TreeNode node=que2.poll();
if(node.val>max){
max=node.val;
}
if(node.left!=null){
que1.add(node.left);
}
if(node.right!=null){
que1.add(node.right);
}
}
arr.add(max);
}
}
int [] ans=new int[arr.size()];
for(int i=0;i<ans.length;i++){
ans[i]=arr.get(i);
}
return ans;
}
}

最新文章

  1. STEP模块——电子琴
  2. Java编译器如何生成重载和覆盖方法代码
  3. 安装DirectX SDK (June 2010) 失败(Error Code S1023)(转)
  4. C# SerialPort的简单使用
  5. 创建对象的两种方法: new 和 面向对象(对象字面量)及对象属性访问方法
  6. AutoCompleteTextview、MultiAutoCompleteTextView
  7. java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决
  8. Java设计模式总汇一
  9. 【转】Nginx配置详解
  10. 记一次尴尬的git reset丢失分支故障
  11. table-一列细分为多列(合并单元格)
  12. Python语言——基础01-环境安装、注释、变量
  13. [原创]K8Cscan插件之Windows密码爆破
  14. Windows系统下PHP使用Redis
  15. [LeetCode] 704. Binary Search_Easy tag: Binary Search
  16. 2018-2019-1 20189206 vim.c插件安装
  17. div+css网页标准布局实例教程(一)
  18. hdu1301 Jungle Roads 最小生成树
  19. SharePoint研究之表单登录配置
  20. MySQL中视图和普通表的区别

热门文章

  1. (Lua) C++ 寫函式,Lua 呼叫使用
  2. win10 ping不通所有地址
  3. Vue项目开发目录结构
  4. trace跟踪代码运行
  5. (转)IBM AIX系统安装
  6. 《Effective C++(第三版)》 的55条建议
  7. 编译原理LL(1)文法
  8. eclipse修改Properties资源文件的默认编码
  9. JavaScript设计模式-10.工厂模式实例xhr
  10. devise在引擎中安装后,设置访问自定义页面