二叉树层序遍历

博客介绍了层序遍历,即按层访问节点。具体步骤为先将根节点放入队列,若队列不为空,取出队头节点访问,判断其有无左右节点,有则放入队列并循环操作,还提及了队列代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

层序遍历就是按照每一层,一层一层的访问节点。

1 先把根节点放入队列
2 如果队列不为空,取出队列头节点,访问该节点,判断该节点有无左右节点,如果有,放入队列,依次循环。
队列代码:

package com.cxbl;

public class LoopQueue<E> {

	private Object[] data = null;
	private int maxSize;  //队列容量
	private int front;	//队头
	private int rear;	//队尾
	private int size = 0;
	
	public int size(){
		return size;
	}
	public boolean isEmpty(){
		return front == rear;
	}
	public LoopQueue(int initSize){
		if(initSize>0){
			data = new Object[initSize];
			maxSize = initSize;
			front = rear = 0;
		}
	}
	
	public boolean add(E e){
		if((rear+1) % maxSize == front){
			//队列满
			return false;
		}else{
			data[rear] = e;
			rear = (rear+1)%maxSize;
			size++;
			return true;
		}
	}
	public E remove(){
		if(front == rear){
			return null;
		}
		E e = (E) data[front];
		data[front]=null;
		front = (front+1)%maxSize;
		size--;
		return e;
	}
}



层序遍历

public class Node {
	int iDta;//id
	double fData;//other data
	Node leftChild;// 左子节点
	Node rightChild;//右子节点
}

public class Tree {
	private Node root;//根节点
/**
	 * 层序遍历
	 * @param root
	 * @return
	 */
	public void levelOrder() {
		if(root==null)return;  
        LoopQueue<Node> queue= new LoopQueue<Node>(20);  
        queue.add(root);  
        while(!queue.isEmpty()){  
            Node temp =  queue.remove();
            System.out.println(temp.iDta);  
            if(temp.leftChild!=null){
            	queue.add(temp.leftChild); 
            } 
            if(temp.rightChild!=null){
            	queue.add(temp.rightChild);  
            }
        }  
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jwt_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值