不是自己想出来的,什么时候才能独立完成树的题。
class Solution(object): def levelOrder(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ levels=[] if not root: return levels def helper(node,level): if len(levels)==level: levels.append([]) levels[level].append(node.val) if node.left: helper(node.left,level+1) if node.right: helper(node.right,level+1) helper(root,0) return levels
执行用时 :20 ms, 在所有 python 提交中击败了90.52%的用户
内存消耗 :12.7 MB, 在所有 python 提交中击败了5.08%的用户
——2019.11.15
自己写的,就是不简洁。
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> list = new ArrayList<>(); List<Integer> l1 = new ArrayList<>(); if(root == null){ return list; } l1.add(root.val); list.add(l1); Deque<List> q = new ArrayDeque<>(); int height = 0; List ls = new ArrayList(); ls.add(root); ls.add(height); q.addLast(new ArrayList(ls)); order(q,list,height); return list; } private void order(Deque<List> q, List<List<Integer>> list,int height) { if(q.isEmpty()){ return; }else{ List<Integer> l = new ArrayList<>(); while (!q.isEmpty()) { TreeNode tn = (TreeNode) q.getFirst().get(0); int h = (int) q.getFirst().get(1); if (h == height) { if(tn != null) { List ls = new ArrayList(); if(tn.left != null){ l.add(tn.left.val); ls.add(tn.left); ls.add(height+1); q.addLast(new ArrayList(ls)); } ls.clear(); if(tn.right != null){ l.add(tn.right.val); ls.add(tn.right); ls.add(height+1); q.addLast(new ArrayList(ls)); } } q.removeFirst(); }else{ list.add(new ArrayList<>(l)); break; } } } order(q,list,height+1); }
我写得好不简洁,看看大佬的代码都是如此简洁。。。
——2020.6.30