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


    第一种也是最常用的一种,使用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);
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    ZOJ 3705 Applications
    UVA 220 Othello
    HDU 2084 数塔
    第五章:变量
    第四章:注释
    第三章:程序结构
    第二章:项目的创建和环境熟悉
    第一章:c#开发环境安装
    处理字段串
    查询表的列信息
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5911298.html
Copyright © 2020-2023  润新知