您好,登錄后才能下訂單哦!
本文實例為大家分享了java實現(xiàn)按層遍歷二叉樹,按層遍歷二叉樹可以通過隊列來實現(xiàn)。其主要思路如下:
1、先將根節(jié)點放入隊列中
2、每次都從隊列中取出一個結(jié)點打印該結(jié)點的值
3、若這個結(jié)點有子結(jié)點,則將它的子結(jié)點放入隊列尾,知道隊列為空。
實現(xiàn)代碼如下:
import java.util.LinkedList; import java.util.Queue; public class LayerTranverse { //按層遍歷二叉樹 public static void main(String[] args) { BinaryTree1 biTree1=new BinaryTree1(); int[] data={2,8,7,4,9,3,1,6,5}; biTree1.buildTree1(data); biTree1.layerTranverse(); } } class Node1{ public int data; public Node1 left; public Node1 right; public Node1(int data){ this.data=data; this.left=null; this.right=null; } } class BinaryTree1{ private Node1 root; public BinaryTree1(){ root=null; } //將data數(shù)據(jù)插入到排序的二叉樹中 public void insert1(int data){ Node1 newNode1=new Node1(data); if(root==null){ root=newNode1; }else{ Node1 current=root; Node1 parent; while(true){ parent=current; if(data<current.data){ current=current.left; if(current==null){ parent.left=newNode1; return; } }else{ current=current.right; if(current==null){ parent.right=newNode1; return; } } } } } public void buildTree1(int[] data){ for(int i=0;i<data.length;i++){ insert1(data[i]); } } public void layerTranverse(){ if(this.root==null){ return; } Queue<Node1> q=new LinkedList<Node1>(); q.add(this.root); while(!q.isEmpty()){ Node1 n=q.poll(); System.out.print(n.data); System.out.print(" "); if(n.left!=null){ q.add(n.left); } if(n.right!=null){ q.add(n.right); } } } }
運行結(jié)果為:
2 1 8 7 9 4 3 6 5
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。