题目:从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
(1)定义两个链表,一个作为寄存链表,用来保存节点,一个作为输出链表,用来保存节点的数据。
(2)若根节点不为空,把根节点存在寄存链表里。
(3)把寄存链表中第一个节点的数据放到输出链表里,如果这个节点还有左右子节点的话,把左右子节点依次存在寄存链表里,然后删除寄存链表里的第一个节点。
(4)执行(3)循环,当寄存链表中节点个数为零时,停止执行。
参考代码
using System.Collections.Generic;
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}*/
using System.Collections;
class Solution
{
public List<int> PrintFromTopToBottom(TreeNode root)
{
// write code here
List<int> list = new List<int>();
List<TreeNode> queue = new List<TreeNode>();
if(root == null)
return list;
else
queue.Add(root);
while(queue.Count != 0)
{
TreeNode temp = queue[0];
queue.RemoveAt(0);
if(temp.left != null)
queue.Add(temp.left);
if(temp.right != null)
queue.Add(temp.right);
list.Add(temp.val);
}
return list;
}
}