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

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

  

时间: 2025-01-04 12:43:56

层序遍历二叉树的两种方法的相关文章

python遍历数组的两种方法的代码

工作过程中,把开发过程中较好的一些内容段备份一下,下面内容是关于python遍历数组的两种方法的内容,希望对小伙伴有用途. colours = ["red","green","blue"] for colour in colours: print colour # red # green # blue 下面的方法可以先获得数组的长度,然后根据索引号遍历数组,同时输出索引号 colours = ["red","gree

创建二叉树的两种方法以及三种遍历方法

二叉树的两种创建方法和三种遍历方法 这里的两种创建方法,一种值得是 数据结构上面的创建方法: 方法一 代码如下: 二叉树的结构定义如下: typedef struct BinaryTreeNode{ char value; struct BinaryTreeNode *left; struct BinaryTreeNode *right; }; - c语言版 void CreateBinaryTree(BinaryTreeNode **T) { char data; scanf("%d"

遍历Map的两种方法

MAP集合遍历的两种方法 1.使用keyset()获得Map中的的key ,然后使用get方法获得这个key对应的value; 示例:Map<String,Integer> map = new HashMap<String,Integer>(); map.put("张三",15); map.put("李四",16); map.put("王五",17); Set ss = map.keyset(); Iterator<

遍历二叉树的三种方法

朋友面试遇到一道笔试题:写出递归遍历二叉树的代码(先序.中序.后序遍历都可以)? 首先要知道二叉树是什么,它的数据结构是怎样的? 如何实现这种二叉树?采用匿名内部类的形式实现 class Node{ //节点数据 private T data; //可比较的泛型 //左子树 private Node leftChildTree; //右子树 private Node rightChildTree; public Node(T data){ this.data = data; } } 知道它的数据

python遍历数组的两种方法

第一种,最常用的,通过for in遍历数组 colours = ["red","green","blue"] for colour in colours: print colour # red # green # blue 第二种,先获得数组的长度,然后根据索引号遍历数组,同时输出索引号 colours = ["red","green","blue"] for i in range(0,

遍历Map的两种方法(有排序)

初始化一个map 1 2 3 4 5 Map<String, String> map = new HashMap<String, String>(); map.put("1", "hell"); map.put("2", "hello"); map.put("3", "hel"); map.put("4", "hello")

javascript遍历数组的两种方法

var array=new Array(); array [0]="北京"; array [1]="天津"; ...//solution 1 for(var i=0;i<array.length;i++){ alert(array[i]); } //solution 2 for(var array_index in array){ //array_index 位置索引,从0開始 alert(array[array_index]); }

15.输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点, 用递归和循环两种方法完成树的镜像转换

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4260432.html  声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点, 用递归和循环两种方法完成树的镜像转换. 题目分析:

利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

要想提取车牌号,首先你要定位车牌区域嘛,本文分别两种方法用,即颜色和形态学的方法,对车牌区域进行判定.说得是两种方法,其实两种方法并无多大的区别,只是有一步的判断标准不一样而已,你看了下面整理出的的思路就知道两者的区别真的很小了. 方法一:利用颜色提取车牌区域的思路: ①求得原图像的sobel边缘sobelMat ②在HSV空间内利用车牌颜色阈值对图像进行二值化处理,得到图像bw_blue→ ③由下面的判别标准得到图像bw_blue_edge for (int k = 1; k != heigh