题目描述:
题解:
1.创建一个nodeque(用list表示),记录搜索节点,初始只有root一个节点,用noderes记录最终结果。
2.每次取出nodeque中的第一个节点node,将node.val加入noderes。如果node左子节点存在,将左子节点加入nodeque,如果右子节点存在将其加入nodeque,然后从nodeque中删除node节点.
class Solution(object): def levelOrder(self, root): nodeque = [] noderes = [] if root==None: return noderes nodeque.append(root) while len(nodeque)!=0: node = nodeque[0] noderes.append(node.val) nodeque.remove(node) if node.left: nodeque.append(node.left) if node.right: nodeque.append(node.right) return noderes
尝试java版:
class Solution { public int[] levelOrder(TreeNode root) { Queue<TreeNode> nodequeue = new LinkedList<TreeNode>(); List<Integer> noderes=new ArrayList<Integer>(); if(root==null){ return noderes.stream().mapToInt(Integer::intValue).toArray(); } nodequeue.add(root); while(nodequeue.size()>0){ TreeNode node = nodequeue.remove(); noderes.add(node.val); if(node.left!=null){ nodequeue.add(node.left); } if(node.right!=null){ nodequeue.add(node.right); } } return noderes.stream().mapToInt(Integer::intValue).toArray(); } }