题解 | #二叉树中和为某一值的路径(二)#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

1、递归:

ArrayList<ArrayList<Integer>> list = new ArrayList<>();
public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
	PrintExcute(pRoot,0);
	return list;  
}

private void PrintExcute(TreeNode pRoot, int deep) {
	if(pRoot == null) {
		return;
	}
	if(deep >= list.size()) {			//如果当前深度超过list大小,在list中添加新的数组
		list.add(deep,new ArrayList<Integer>());
	}
	if(deep % 2 == 0) {					//判断深度奇偶
		list.get(deep).add(pRoot.val);  //在list的第deep元素的末尾添加值
	}else {
		list.get(deep).add(0,pRoot.val);//在list的第deep元素的首位添加值
	}
	PrintExcute(pRoot.left,deep+1);		//递归
	PrintExcute(pRoot.right,deep+1);	//递归
}

2、队列:

public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
	ArrayList<ArrayList<Integer>> list = new ArrayList<>();
	if(pRoot == null) {
		return list;
	}
	Queue<TreeNode> queueNode = new LinkedList<TreeNode>();;
	queueNode.offer(pRoot);
	boolean islr = true; 
	while(!queueNode.isEmpty()) {
		ArrayList<Integer> tmpArray = new ArrayList<>();	//临时数组,储存当前深度的树的值
		int size = queueNode.size();						//当前队列的大小,也即当前深度的元素的数量
		for(int i = 0; i < size; i++) {
			TreeNode node = queueNode.poll();				//Queue.pull返回队列的第一个元素并将其移出除队列
			if(islr) {
				tmpArray.add(node.val);						//将元素添加到数组的末尾
			}else {
				tmpArray.add(0,node.val);					//将元素添加到数组的最前
			}
			if(node.left != null) {
				queueNode.offer(node.left);					//左子树入队
			}
			if(node.right != null) {	
				queueNode.offer(node.right);				//右子树入队
			}
		}
		if(tmpArray.size() != 0) {
			list.add(tmpArray);								//添加到list中
		}
		islr = !islr; 										//每次遍历完一次深度修改值,即修改下一深度的排序
	}
	
	return list;
	
}
全部评论

相关推荐

尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
439565次浏览 4481人参与
# 春招别灰心,我们一人来一句鼓励 #
41297次浏览 523人参与
# 北方华创开奖 #
107186次浏览 598人参与
# 地方国企笔面经互助 #
7904次浏览 18人参与
# 虾皮求职进展汇总 #
113037次浏览 878人参与
# 实习,投递多份简历没人回复怎么办 #
2453508次浏览 34845人参与
# 阿里云管培生offer #
119522次浏览 2219人参与
# 实习必须要去大厂吗? #
55545次浏览 959人参与
# 同bg的你秋招战况如何? #
74881次浏览 544人参与
# 提前批简历挂麻了怎么办 #
149742次浏览 1975人参与
# 投递实习岗位前的准备 #
1195546次浏览 18545人参与
# 你投递的公司有几家约面了? #
33162次浏览 188人参与
# 双非本科求职如何逆袭 #
661700次浏览 7392人参与
# 机械人春招想让哪家公司来捞你? #
157576次浏览 2267人参与
# 如果公司给你放一天假,你会怎么度过? #
4705次浏览 53人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11170次浏览 252人参与
# 发工资后,你做的第一件事是什么 #
12320次浏览 60人参与
# 工作中,努力重要还是选择重要? #
35479次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20062次浏览 240人参与
# 实习想申请秋招offer,能不能argue薪资 #
39188次浏览 314人参与
# 我的上岸简历长这样 #
451841次浏览 8086人参与
# 非技术岗是怎么找实习的 #
155825次浏览 2120人参与
牛客网
牛客企业服务