[leetcode] 107. Binary Tree Level Order Traversal II
来源:互联网 发布:淘宝西班牙代购真假 编辑:程序博客网 时间:2024/06/15 05:13
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,null,null,15,7],
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
解题思路:
二叉树的层次遍历
用两个List分别暂时存储奇数层的节点和偶数层的节点,奇数层List中开始存储的是root节点,然后把奇数层节点的子节点依次全部放入存储偶数层的节点List中,并在存储的过程中把子节点存储过的节点删掉并把奇数层几点的值存储在一个List中,然后进行偶数层遍历,循环至两个List都为空表示遍历完成。
具体代码实现如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> result = new ArrayList(); if(root == null){ return result; } List<TreeNode> s_even = new ArrayList(); s_even.add(root); List<TreeNode> s_odd = new ArrayList(); int i = 1;//记录进行到是奇数层还是偶数层 while(true){ List<Integer> list = new ArrayList();//存储一层中的所有数据 if(i%2 == 1){ while(s_even.isEmpty() == false){ TreeNode node = s_even.get(0); s_even.remove(0); if(node.left != null){ s_odd.add(node.left); } if(node.right != null){ s_odd.add(node.right); } list.add(node.val);//把这个节点数据加入到list中 } } if(i % 2 == 0){ while(s_odd.isEmpty() == false){ TreeNode node = s_odd.get(0); s_odd.remove(node); if(node.left != null){ s_even.add(node.left); } if(node.right != null){ s_even.add(node.right); } list.add(node.val); } } result.add(list);//把一层的结果加入到最终结果中 if(s_even.isEmpty()&s_odd.isEmpty()){//结束条件 break; } i++; } List<List<Integer>> result_temp = new ArrayList(); int re_len = result.size(); //因为题目需要的最终结果是从最底层开始的,而我们是从顶开始的 所以进行逆序 for(int j = 0; j < re_len; j++){ result_temp.add(result.get(re_len-1-j)); } return result_temp; }}
0 0
- [LeetCode]102. Binary Tree Level Order Traversal&107. Binary Tree Level Order Traversal II
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- [Leetcode]Binary Tree Level Order Traversal II
- [leetcode]Binary Tree Level Order Traversal II
- LeetCode-Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- LeetCode | Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- 【LeetCode】Binary Tree Level Order Traversal II
- 局部变量创建非模态对话框
- CSS相邻选择符
- iOS学习笔记27-摄像头
- 一个通用链表模块(C语言)
- 用Eclipse开发安卓-无法正常预览布局文件layout.xml
- [leetcode] 107. Binary Tree Level Order Traversal II
- mysql不同字段类型所占用的空间
- ios7 statusbar透明设置
- CodeForces 467C George and Job
- 弹出广告视图
- 模板的特化
- 实习笔记4
- okhttp使用说明
- TTS授权失败 iOS百度导航