java完全二叉树的构建与四种遍历方法示例

  

本来就是基础知识,不能丢的太干净,今天竟然花了那么长的时间才写出来,记一下。

  

有如下的一颗完全二叉树:

  

癹ava完全二叉树的构建与四种遍历方法示例"

  

先序遍历结果应该为:1,2,4,5,3,6,7

  

中序遍历结果应该为:4,2,5,1,6,3,7

  

后序遍历结果应该为:4,5,2,6,7,3,1

  

层序遍历结果应该为:1,2,3,4,5,6,7

  

二叉树的先序遍历,中序遍历,后序遍历其实都是一样的,都是执行递归操作。

  

我这记录一下层次遍历吧:层次遍历需要用到队列,先入队在出队,每次出队的元素检查是其是否有左右孩子,有则将其加入队列,由于利用队列的先进先出原理,进行层次遍历。

  

下面记录下完整代码(Java实现),包括几种遍历方法:

        进口java.util.ArrayDeque;   进口java.util.ArrayList;   进口并不知道;   进口java.util.Queue;/* *   *定义二叉树节点元素   * @author泡沫   *   */{类节点   公共节点leftchild;   公共节点rightchild;   公共int数据;      公共节点(int数据){   这一点。数据=https://www.yisu.com/zixun/data;   }      }      公开课TestBinTree {/* *   数*将一个进行组构建成一个完全二叉树   * @param arr需要构建的数组   * @return二叉树的根节点   */公共节点initBinTree (int [] arr) {   如果(加勒比海盗。长度==1){   返回新节点(arr [0]);   }   <节点列表>节点列表=new ArrayList <> ();      for (int i=0;我 nodeQueue=new ArrayDeque <> ();   nodeQueue.add(根);   节点temp=零;   int currentLevel=1;//记录当前层需要打印的节点的数量   int nextLevel=0;//记录下一层需要打印的节点的数量   在((temp=nodeQueue.poll ()) !=null) {   如果(temp.leftchild !=null) {   nodeQueue.add (temp.leftchild);   nextLevel + +;      }   如果(temp.rightchild !=null) {   nodeQueue.add (temp.rightchild);   nextLevel + +;   }   System.out.print (temp。数据+ " ");   currentLevel——;   如果(currentLevel==0) {   System.out.println ();   currentLevel=nextLevel;   nextLevel=0;   }   }   }/* *   *先序遍历   * @param根二叉树根节点   */公共空间preTrival(根节点){   如果(root==null) {   返回;   }   System.out.print(根。数据+ " ");   preTrival (root.leftchild);   preTrival (root.rightchild);   }/* *   *中序遍历   * @param根二叉树根节点   */公共空间midTrival(根节点){   如果(root==null) {   返回;   }   midTrival (root.leftchild);   System.out.print(根。数据+ " ");   midTrival (root.rightchild);   }/* *   *后序遍历   * @param根二叉树根节点   */公共空间afterTrival(根节点){   如果(root==null) {   返回;      }   afterTrival (root.leftchild);   afterTrival (root.rightchild);   System.out.print(根。数据+ " ");   }         公共静态void main (String [] args) {   TestBinTree btree=new TestBinTree ();   arr int []=new int [] {1, 2, 3, 4, 5, 6, 7};   根节点=btree.initBinTree (arr);   System.out.println(“层序遍历(分层打印):”);   btree.trivalBinTree(根);   System.out.println (“\ n先序遍历:”);   btree.preTrival(根);   System.out.println (“\ n中序遍历:”);   btree.midTrival(根);   System.out.println (“\ n后序遍历:”);   btree.afterTrival(根);      }      }      之前      

遍历结果:

  

癹ava完全二叉树的构建与四种遍历方法示例"

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java完全二叉树的构建与四种遍历方法示例