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);
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    PCA手写版 Learner
    泛解析和伪静态实现二级域名(net技术)
    内存分配笔记(一)
    NVelocity的使用总结
    从discuz 里扒过来的一个通用序列化和反序列化类
    类中的执行顺序
    Nhibernate 工具 Nh profiler 使用方法
    UML中几种类间关系
    golf的23种设计模式
    net中的定时器
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5911298.html
Copyright © 2011-2022 走看看