Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode
来源:互联网 发布:linux 播放 4k 视频 编辑:程序博客网 时间:2024/05/16 12:46
树的Level Order Traversal加上ArrayList翻转
package Level3;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;import Utility.TreeNode;/** * Binary Tree Level Order Traversal II * * Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).For example:Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7return its bottom-up level order traversal as:[ [15,7] [9,20], [3],]confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.OJ's Binary Tree Serialization:The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.Here's an example: 1 / \ 2 3 / 4 \ 5The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}". * */public class S107 {public static void main(String[] args) {}public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();if(root == null){return ret;} Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); ArrayList<ArrayList<Integer>> alal = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> al = new ArrayList<Integer>(); // 记录两个当前level和下一个level的node数目 int currentLevel = 1; int nextLevel = 0; while( !queue.isEmpty() ){ TreeNode cur = queue.remove(); currentLevel--; al.add(cur.val); if(cur.left != null){ queue.add(cur.left); nextLevel++; } if(cur.right != null){ queue.add(cur.right); nextLevel++; } if(currentLevel == 0){ alal.add(al); al = new ArrayList<Integer>(); currentLevel = nextLevel; nextLevel = 0; } } // 翻转ArrayList for(int i=alal.size()-1; i>=0; i--){ ret.add(alal.get(i)); } return ret; }}
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) { ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>(); if(root == null){ return ret; } LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); int curLevCnt = 1; int nextLevCnt = 0; ArrayList<Integer> al = new ArrayList<Integer>(); while(!queue.isEmpty()){ TreeNode cur = queue.remove(); curLevCnt--; al.add(cur.val); if(cur.left != null){ queue.add(cur.left); nextLevCnt++; } if(cur.right != null){ queue.add(cur.right); nextLevCnt++; } if(curLevCnt == 0){ curLevCnt = nextLevCnt; nextLevCnt = 0; ret.add(al); al = new ArrayList<Integer>(); } } ArrayList<ArrayList<Integer>> ret2 = new ArrayList<ArrayList<Integer>>(); for(int i=ret.size()-1; i>=0; i--){ ret2.add(ret.get(i)); } return ret2; }}
- Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode
- 【LeetCode笔记】Binary Tree Level Order Traversal II 二叉树按层遍历,反向输出
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- LeetCode | Binary Tree Level Order Traversal(二叉树层序遍历)
- LeetCode OJ 之 Binary Tree Level Order Traversal II (二叉树的层次遍历-二)
- LeetCode 107. Binary Tree Level Order Traversal II(二叉树分层遍历)
- Binary Tree Zigzag Level Order Traversal 二叉树按层遍历,zigzag输出@LeetCode
- Binary Tree Level Order Traversal II 二叉树的反向层序遍历
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- 【leetcode 层序遍历】Binary Tree Level Order Traversal II
- leetcode---binary-tree-level-order-traversal-ii---树层次遍历
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- Leetcode Binary Tree Level Order Traversal II 二叉树分层遍历
- 107.LeetCode Binary Tree Level Order Traversal II(easy)[二叉树层次遍历 广度搜索 队列]
- Leetcode 107. Binary Tree Level Order Traversal II 二叉树层次遍历2 解题报告
- [LeetCode]107. Binary Tree Level Order Traversal II--二叉树层序遍历2
- LeetCode-107-Binary Tree Level Order Traversal II(二叉树级序遍历<2>)
- Leetcode#107. Binary Tree Level Order Traversal II (queue二叉树层次遍历)
- Discuz移动到头像上显示“内部错误,无法显示此内容”的解决方法
- 十大常见Java String问题
- Redis应用场景
- 带传动产生松边和紧边的原因
- Search in Rotated Sorted Array 旋转数组里查找数 @LeetCode
- Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode
- petsc 矩阵测试
- Populating Next Right Pointers in Each Node II 任意(非完美)二叉树添加next指针 @LeetCode
- Apache HttpClient 4.3开发指南
- bash脚本文件注释
- qsort函数用法
- Django 学习笔记(六)
- hdoj1421 搬寝室 (dp)
- 浏览器内核比较