【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
2017-10-22 14:40
525 查看
二叉树的层次遍历 II
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)
标签
队列 二叉树 二叉树遍历 宽度优先搜索
相关题目
中等Search Graph Nodes45 %
(1)Java
(2)C++
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)
样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 按照从下往上的层次遍历为: [ [15,7], [9,20], [3] ]
标签
队列 二叉树 二叉树遍历 宽度优先搜索
相关题目
中等Search Graph Nodes45 %
(1)Java
import BinaryTree.TreeNode; import java.util.*; public class BinaryTreeLevelOrderTraversal_ii { /* * @param root: A tree * @return: buttom-up level order a list of lists of integer */ public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> results = new ArrayList<>(); if(root == null){ return results; } Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); while(!queue.isEmpty()){ List<Integer> buffer = new ArrayList<>();//must be defined in while-loop!! int size = queue.size(); for(int i = 0; i < size; i++){ TreeNode head = queue.poll(); buffer.add(head.val); if(head.left != null){ queue.offer(head.left); } if(head.right != null){ queue.offer(head.right); } } results.add(buffer); } Collections.reverse(results);// return results; } }
(2)C++
#include <stdio.h> #include <vector> #include <queue> #include <algorithm> using namespace std; /*--- binary-tree-level-order-traversal(ii) ---*/ // Definition of TreeNode: class TreeNode { public: int val; TreeNode *left, *right; TreeNode(int val) { this->val = val; this->left = this->right = NULL; } }; //Version 1 : 1 Queue【Recommend】 class BinaryTreeLevelOrderTraversal_ii{ public: /* * @param root: A tree * @return: buttom-up level order a list of lists of integer */ vector<vector<int>> levelOrderBottom(TreeNode * root) { // write your code here vector<vector<int>> results; if(root == NULL){ return results; } queue<TreeNode*> Q; Q.push(root); while (!Q.empty()) { vector<int> buffer; int size = Q.size(); for(int i = 0; i < size; i++){ TreeNode* root = Q.front(); Q.pop(); buffer.push_back(root->val); if(root->left != NULL){ Q.push(root->left); } if(root->right != NULL){ Q.push(root->right); } } results.push_back(buffer); } reverse(results.begin(), results.end()); return results; } }; //Version 2 : 1 Queue + Dummy Node class BinaryTreeLevelOrderTraversal_ii_V2 { /** * @param root : The root of binary tree. * @return : buttom-up level order a list of lists of integer */ public: vector<vector<int>> levelOrderBottom(TreeNode *root) { // write your code here vector<vector<int> > ret; ret.clear(); if(root == NULL) return ret; queue<TreeNode*> S; S.push(root); S.push(NULL); vector<int> tmp; while(!S.empty()){ //travesal current level TreeNode* p = S.front(); S.pop(); if(p!=NULL) { tmp.push_back(p->val); if(p->left) S.push(p->left); if(p->right) S.push(p->right); }else{ if(!tmp.empty()) { S.push(NULL); ret.push_back(tmp); tmp.clear(); } } } reverse(ret.begin(),ret.end()); return ret; } };
相关文章推荐
- LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- Leetcode 107 Binary Tree Level Order Traversal II 二叉树层次遍历与倒转
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- leetcode 二叉树层次遍历输出Binary Tree Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- LeetCode: 102_Binary Tree Level Order Traversal | 二叉树自顶向下的层次遍历 | Easy
- [LeetCode] Binary Tree Level Order Traversal II 二叉树层序遍历之二
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- Binary Tree Level Order Traversal I和II 层次遍历二叉树
- [leetcode-二叉树层次遍历并统计每层节点数]--102. Binary Tree Level Order Traversal
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- 【LeetCode】Binary Tree Zigzag Level Order Traversal 二叉树的锯齿形层次遍历 - Medium(LinkedIn)
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)