题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
/*public class TreeNode{public int val;public TreeNode left;public TreeNode right;public TreeNode (int x){val = x;}}*/using System;using System.Collections.Generic;
class Solution{public List<List<int>> Print(TreeNode pRoot){// write code her
// write code here
List<List<int>> result = new List<List<int>>();
if(pRoot==null)
return result;
Queue<TreeNode> queue = new Queue<TreeNode>();
queue.Enqueue(pRoot);
bool LeftToRight = true;
while(queue.Count>0)
{
List<int> thisList = new List<int>();
int len = queue.Count;
//这里要记录此时的count用于边界判断,因为for里面有出入队列的操作,count会变
for(int i =0;i<len;i++)
{
TreeNode node = queue.Dequeue();
if(node.left!=null) queue.Enqueue(node.left);
if(node.right!=null) queue.Enqueue(node.right);
//根据当前布尔值,顺序或倒序将这一层的val插入list中
if(LeftToRight)
thisList.Add(node.val);
else
thisList.Insert(0, node.val);
}
LeftToRight = !LeftToRight;
result.Add(thisList);
}
return result;
}
}
