Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270079
  • 博文数量: 170
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1709
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-06 18:01
文章分类

全部博文(170)

文章存档

2016年(11)

2015年(130)

2014年(29)

分类: Java

2015-03-22 11:37:08


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   7


return its bottom-up level order traversal as:

[
  [15,7],
  [9,20],
  [3]
]
public List> levelOrderBottom(TreeNode root) {
            List> result=new ArrayList>();
   if(root==null)
    return result;
   List preelement=new ArrayList();
   preelement.add(root);
   Stack> stack=new Stack();
   stack.push(preelement);
 //把每层非空的取出来
   while(true){
    List nowelement=new ArrayList();
    boolean isFinish=false;
    for(TreeNode a : preelement){
    if(a.left!=null){
    isFinish=true;
    nowelement.add(a.left);
    }
    if(a.right!=null){
    isFinish=true;
    nowelement.add(a.right);
    }
   

    //全是空了
    }
    if(!isFinish)
    break;
    stack.push(nowelement);
    preelement=nowelement;
   
   }
   while (!stack.empty()) {
    List element=new ArrayList<>();
    List nodes=stack.pop();
    for(TreeNode aNode:nodes)
    element.add(aNode.val);
result.add(element);
}
   return result;
    }
阅读(231) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~