Binary Tree Level Order Traversal II (Java)

来源:互联网 发布:淘宝网国际转运服务 编辑:程序博客网 时间:2024/05/22 10:53

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]]

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    \     5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
建议重新写一遍 java只改了一个s.add
Source
 public List<List<Integer>> levelOrderBottom(TreeNode root) {        List<List<Integer>> s = new ArrayList<List<Integer>>();        if(root == null) return s;                LinkedList<TreeNode> l = new LinkedList<TreeNode>();        l.add(root);                int cur = 1;        int next = 0;        List<Integer> val = new ArrayList<Integer>();                while(!l.isEmpty()){                TreeNode a = l.poll();        cur--;        val.add(a.val);                if(a.left != null){        l.add(a.left);        next ++;        }                if(a.right != null){        l.add(a.right);        next ++;        }                if(cur == 0){        cur = next;        next = 0;        s.add(0,val);   //与Binary Tree Level Order Traversal第一题不同的是,添加的时候添加到最前面就行了。。。        val = new ArrayList<Integer>();//不用重新写List val =。。。  注意此条 要在一层检查完的时候进行清理        }        }        return s; }


Test
0 0
原创粉丝点击