二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现

1.遍历模式
前序遍历:根->左->右(深度优先)
中序遍历:左->根->右(深度优先)
后序遍历:左->右->根(深度优先)
层次遍历:每一层从左到右(广度优先)
2.例子:
二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现_第1张图片
3.前序遍历的实现思想和API构建:
二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现_第2张图片
代码实现:

//前序遍历
	
	//获取整个树中所有的键
	public Queue<key> preTraversal(){
   
		Queue<key> keys =new Queue<key>();
		preTraversal(root,keys);
		return keys;
	}
	
	//获取指定树x的所有键,并放到key队列中
	private void preTraversal(Node x,Queue<key> keys){
   
		//安全性验证
		if(x==null){
   
			return;
		}
		//把x节点的key放到keys中
		keys.InQueue(x.key);
		//递归遍历x节点的左子树
		if(x.left!=null){
   
			preTraversal(x.left,keys);
		}
		//递归遍历x节点的右子树
		if(x.right!=null){
   
			preTraversal(x.right,keys);
		}
	}
	

4.中序遍历的实现思想和API构建:
二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现_第3张图片
代码实现:

//中序遍历
	//使用中序遍历来获取树中所有的键
	public Queue<key> midTraversal(){
   
		Queue<key> keys =new Queue<key>();
		midTraversal(root,keys);
		return keys;
	}
	
	//使用中序遍历来获取指定树x中的所有键,并存放到keys中
	private void midTraversal(Node x,Queue<key> keys){
   
		//安全性校验
		if(x==null){
   
			return;
		}
		//先递归,把左子树中所有的键放到keys中
		if(x.left!=null){
   
			midTraversal(x.left,keys);
		}
		//把当前节点的键放到keys中
		keys.InQueue(x.key);
		//再递归,把右子树中的键放到keys中
		if(x.right!=null){
   
		midTraversal(x.right,keys);
		}
	}
	

5.后序遍历的实现思想和API构建:
二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现_第4张图片
代码实现:

//后序遍历
	//使用后序遍历来获取树中所有的键
	public Queue<key> backTraversal(){
   
		Queue<key> keys =new Queue<key>();
		backTraversal(root,keys);
		return keys;
	}
	
	//使用后序遍历来获取指定树x中的所有键,并存储到keys队列中
	private void backTraversal(Node x,Queue<key> keys){
   
		//安全性校验
		if(x==null){
   
			return;
		}
		//先递归,把左子树的键全部放到keys中
		if(x.left!=null){
   
			backTraversal(x.left,keys);
		}
		//再递归把右子树中的键全部放到keys中
		if(x.right!=null){
   
			backTraversal(x.right,keys);
		}
		//最后把x节点的键放到keys中
		keys.InQueue(x.key);
	}
	

6.层次遍历的实现思想和API构建:
二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现_第5张图片
二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现_第6张图片
二叉树的遍历(前序遍历,中序遍历,后序遍历,层次遍历)Java实现_第7张图片
代码实现:

//层次遍历
	//使用层次遍历获取整个树中所有的键
	public Queue<key> layerTraversal(){
   
		//定义两个队列,分别存储树中的键和树中的节点
		Queue<key> keys =new Queue<key>

你可能感兴趣的:(二叉树,算法,数据结构,数据结构,算法,java)