首页 > 代码库 > 层序遍历二叉树的两种方法

层序遍历二叉树的两种方法

第一种也是最常用的一种,使用queue。还有一种不使用queue的方法。不使用queue的思路,其实就是每次都只存储一层的节点,然后遍历这一层的节点,是真正的按层遍历的思想。每次遍历的都是当前层,记录的都是当前层的下一层。

public class test{	public static void main(String[] args) 	{		TreeNode root = new TreeNode(1);		TreeNode r1 = new TreeNode(2);		TreeNode r2 = new TreeNode(3);		root.left = r1;		root.right = r2;		test.levelTraversal2(root);	}	//不使用队列	public static void levelTraversal(TreeNode root)	{		ArrayList<TreeNode> list = new ArrayList<>();		list.add(root);		while(!list.isEmpty())		{			ArrayList<TreeNode> temp = new ArrayList<>();			for (TreeNode node : list) 			{				System.out.print(node.val);				if(node.left != null)				{					temp.add(node.left);				}				if(node.right != null)				{					temp.add(node.right);				}			}			list = temp;		}	}		//使用队列	public static void levelTraversal2(TreeNode root)	{		ArrayDeque<TreeNode> queue = new ArrayDeque<>();		queue.add(root);		while(!queue.isEmpty())		{			TreeNode temp = queue.poll();			System.out.print(temp.val);			if(temp.left != null)			{				queue.offer(temp.left);			}			if(temp.right != null)			{				queue.offer(temp.right);			}		}	}}

  

层序遍历二叉树的两种方法