https://oj.leetcode.com/problems/binary-tree-level-order-traversal-ii/
这是一个二叉树的层次遍历问题
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>>list_list=new ArrayList<List<Integer>>();
if(root==null)return list_list;
List<Integer>list=new ArrayList<Integer>();
LinkedList<TreeNode>queue=new LinkedList<TreeNode>();
LinkedList<TreeNode>queue_temp;
queue.add(root);
list.add(root.val);
list_list.add(new ArrayList(list));
while(queue.isEmpty()==false){
queue_temp=new LinkedList<TreeNode>();
list.clear();
while(queue.isEmpty()==false){
TreeNode temp=queue.pop();
if(temp.left!=null){
queue_temp.add(temp.left);
list.add(temp.left.val);
}
if(temp.right!=null){
queue_temp.add(temp.right);
list.add(temp.right.val);
}
}//while
if(list.size()!=0)
list_list.add(0,new ArrayList(list));
queue=queue_temp;
}
return list_list;
}
}
Binary Tree Level Order Traversal
这也是个层次遍历问题
跟上一个的区别只不过是一个自底向上存储,这个却是自顶向上存储,
这个程序和上面程序的区别只有一行
list_list.add(0,new ArrayList(list));
和
list_list.add(new ArrayList(list));
的区别
public class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>>list_list=new ArrayList<List<Integer>>();
if(root==null)return list_list;
List<Integer>list=new ArrayList<Integer>();
LinkedList<TreeNode>queue=new LinkedList<TreeNode>();
LinkedList<TreeNode>queue_temp;
queue.add(root);
list.add(root.val);
list_list.add(new ArrayList(list));
while(queue.isEmpty()==false){
queue_temp=new LinkedList<TreeNode>();
list.clear();
while(queue.isEmpty()==false){
TreeNode temp=queue.pop();
if(temp.left!=null){
queue_temp.add(temp.left);
list.add(temp.left.val);
}
if(temp.right!=null){
queue_temp.add(temp.right);
list.add(temp.right.val);
}
}//while
if(list.size()!=0)
list_list.add(new ArrayList(list));
queue=queue_temp;
}
return list_list;
}
}