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

1.遍历模式
前序遍历:根->左->右(深度优先)
中序遍历:左->根->右(深度优先)
后序遍历:左->右->根(深度优先)
层次遍历:每一层从左到右(广度优先)
2.例子:
在这里插入图片描述
3.前序遍历的实现思想和API构建:
在这里插入图片描述
代码实现:

//前序遍历
	
	//获取整个树中所有的键
	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构建:
在这里插入图片描述
代码实现:

//中序遍历
	//使用中序遍历来获取树中所有的键
	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构建:
在这里插入图片描述
代码实现:

//后序遍历
	//使用后序遍历来获取树中所有的键
	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构建:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码实现:

//层次遍历
	//使用层次遍历获取整个树中所有的键
	public Queue<key> layerTraversal(){
   
		//定义两个队列,分别存储树中的键和树中的节点
		Queue<key> keys =new Queue<key>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值