题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
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; }
}