学习笔记-二叉树

来源:互联网 发布:的士打车软件 编辑:程序博客网 时间:2024/05/22 13:23

二叉树主要输出是关于他的四种遍历(前,中,后,层次)

根据java数据结构,先建立一个节点类BinaryNode

代码参考《java数据结构》以及同学

class BinaryNode {int data;//数据项BinaryNode left, right;左右节点public BinaryNode(int data, BinaryNode left, BinaryNode right) {super();this.data = data;this.left = left;this.right = right;}public BinaryNode(int data) {this(data, null, null);}}

然后再有一个二叉树类来实现方法

class BinaryTree {BinaryNode root;//根public BinaryTree(BinaryNode root) {super();this.root = root;}public BinaryTree() {this.root = null;}public void insert (int t){insert(this.root,t);}public void insert(BinaryNode p,int t){//以二叉搜索树为例if(this.root==null){this.root=new BinaryNode(t);}else if(p.data<t){if(p.right==null){p.right=new BinaryNode(t);}else{insert(p.right,t);}}else{if(p.left == null){p.left=new BinaryNode(t);}else{insert(p.left,t);//左的左}}}public String levelOrder(int n){String str = "";Queue<BinaryNode> q = new LinkedList<BinaryNode>();if(this.root != null){q.add(this.root);}while(!q.isEmpty()){BinaryNode t = q.poll();str += t.data+" ";if (t.left != null) {  q.add(t.left);  } if (t.right != null) {    q.add(t.right);  }   }return str;}} 
主方法

import java.util.*;public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);while (cin.hasNext()) {int n = cin.nextInt();BinaryTree tree = new BinaryTree();for(int i=0;i<n;i++){tree.insert(cin.nextInt());}String str = tree.levleOrder(n);System.out.println(str.substring(0, str.length()-1));}cin.close();}}



0 0
原创粉丝点击