zoukankan      html  css  js  c++  java
  • 层序遍历二叉树的两种方法

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

      

  • 相关阅读:
    3.css3文字与字体
    2.css3表示颜色的几种方式
    测试ssh转发
    硬盘相关合集,以及LVM操作实践
    linux硬件驱动
    启动nfs清除端口占用过程
    postgres10.2时区研究
    git submodule临时分支;以及git reset使用
    sudo环境变量问题;程序库函数寻找
    linuxI/O重定向
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5911298.html
Copyright © 2011-2022 走看看