二叉树的层级遍历/锯齿遍历--Java版

前言

  • 今天在力扣上看到这样一道题,感觉挺有趣,而后几经挫折解出来,结果和其他博主的有异同~

题目

  • 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
    例如:给定二叉树: [3,9,20,null,null,15,7]
    给定二叉树
  • 输出
    输出结果
  • 摘自力扣102题

解题思路/知识点

  • 层级遍历二叉树,一般借助队列作为缓冲。
  • 头节点出队列,同时判断头节点是否含有左右子节点,如果有,则入队列。
  • 如何判断层级?
    本篇借助在队列里插入【干扰因子】的方式,即一个标识符来判断层级。
  • 以此树来演示
    在这里插入图片描述
  • 步骤:null入队–>头节点入队(3)–>null出队->null入队尾->头节点出队(3)->头节点的左右节点入队(9/20)->null出队->null入队尾->9出队->20出队;
  • 以上方法表示两个null之间是一个层级,如果还有模糊,不急,showCode。

showCode

  • 万物皆对象~

创建节点对象

public class TreeNode {
   
	int value;
	TreeNode lNode;
	TreeNode rNode;
	//设置value值
	public void setValue(int value) {
   
		this.value = value;
	}
	//设置左节点
	public void setlNode(TreeNode lNode){
   
		this.lNode = lNode;
	}
	//设置右节点
	public void setrNode(TreeNode rNode){
   
		this.rNode = rNode;
	}
	//前序遍历
	public void frontShow() {
   
	//先遍历当前节点的内容
	System.out.println(value);
	//遍历左节点
	if(lNode!=null){
   
		lNode.frontShow();
	}
	//遍历右节点
	if(rNode!=null){
   
		rNode.frontShow();
		}
	}
		}

创建树对象

public class BinaryTree {
   
	TreeNode root;
	//设置根节点
	public void setRoot(TreeNode root) {
   
		this.root = root;
	}
	//前序遍历
	public void frontShow(){
   
		this.root.frontShow();
	}
}

创建测试类

public class Solution {
   
	//用于创建二叉树节点集合
	List<TreeNode> treeNodes = new ArrayList<TreeNode>();
	//二叉树
	BinaryTree tree = new BinaryTree();
	
	public static void main(String[] args) {
   
		
	}
}
  • 首先编写一个创建二叉树的方法,我们使用递归。
	/**
	 * @param index 当前索引
	 * @param node 当前节点
	 * */
public void createBinaryTree(int index,TreeNode node) {
   
		if(index == 0) {
   
			tree.setRoot(treeNodes
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值