题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:层次遍历
利用队列从上至下,从左至右,依次存储每一个结点。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回从上到下每个节点值列表,例:[1,2,3]
def PrintFromTopToBottom(self, root):
# write code here
res=[]
q=[]
if not root:
return []
q.append(root)//根节点加入队列中
while(q):
res.append(q[0].val)//队头元素的值
if q[0].left://判读对头节点的左右节点加入队列
q.append(q[0].left)
if q[0].right:
q.append(q[0].right)
q.pop(0)
return res
import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> res=new ArrayList<>();
Queue<TreeNode> queue=new LinkedList<>();//queue是抽象类,要用LinkedList创建
if(root==null) return res;
queue.add(root);
while(!queue.isEmpty()){
res.add(queue.peek().val);//peek()取对头元素
TreeNode node=queue.poll();//将队头元素删除,没有则返回null
if(node.left!=null) queue.add(node.left);
if(node.right!=null) queue.add(node.right);
}
return res;
}
}