LeetCode Binary Tree Zigzag Level Order Traversal

本文介绍了一种特殊的二叉树遍历方法——之字形遍历,并提供了一个具体的实现示例。该方法首先从根节点开始,随后每一层的节点值按从左到右或从右到左的顺序收集,交替进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

return its zigzag level order traversal as:

[
  [3],
  [20,9],
  [15,7]
]

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.


OJ's Binary Tree Serialization:

The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

Here's an example:

   1
  / \
 2   3
    /
   4
    \
     5
The above binary tree is serialized as  "{1,2,3,#,#,4,#,#,5}".
题意:

就是给定一棵二叉树,然后按照之字形来输出,其实就是层次遍历,只不过遇到偶数层,就换一下顺序即可,换汤不换药的题,和我之前的那两篇博客的方法基本一样。

public class Solution 
{
    public List<List<Integer>> zigzagLevelOrder(TreeNode root)
	{
		List<List<Integer>> list = new ArrayList<List<Integer>>();
		
		LinkedList<TreeNode> node = new LinkedList<TreeNode>();
		if(root == null)
			return list;
		else
		{
		    node.add(root);
		    int length = node.size();
		    int i = 1;
		    while(!node.isEmpty())
		    {
		    	List<Integer> nodes = new ArrayList<Integer>();
		    	while(length-- > 0)
		    	{
		    		int value = node.peek().val;
		    		TreeNode n = node.peek();
		    		node.poll();
		    		nodes.add(value);
		    		if(n.left != null)
		    			node.add(n.left);
		    		if(n.right != null)
		    			node.add(n.right);
		    	}
		    	length = node.size();
		    	if(i % 2 == 0)
		    		Collections.reverse(nodes);
		    	list.add(nodes);
		    	i++;
		    }
		    return list;
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值