二叉樹搭建及先序、中序、後序遍歷(JAVA)
阿新 • • 發佈:2018-11-15
A
/ \
B C
/ \ \
D E F
package binaryTree; public class BinaryTree { public Treenode createBinaryTree() { Treenode a=new Treenode(0, "A"); Treenode b=new Treenode(1, "B"); Treenode c=new Treenode(2, "C"); Treenode d=new Treenode(3, "D"); Treenode e=new Treenode(4, "E"); Treenode f=new Treenode(5, "F"); a.setLeftChild(b); a.setRightChild(c); b.setLeftChild(d); b.setRightChild(e); c.setRightChild(f); return a; } public static void main(String args[]) { BinaryTree binaryTree =new BinaryTree(); Treenode root=binaryTree.createBinaryTree(); //binaryTree.preOrder(root); //binaryTree.midOrder(root); binaryTree.pastOrder(root); System.out.println(binaryTree.getHeight(root)); } public void preOrder(Treenode root)//先序 { System.out.println(root.data); if(root.leftChild!=null) preOrder(root.leftChild); if(root.rightChild!=null) preOrder(root.rightChild); } public void midOrder(Treenode root)//中序 { if(root.leftChild!=null) midOrder(root.leftChild); System.out.println(root.data); if(root.rightChild!=null) midOrder(root.rightChild); } public void pastOrder(Treenode root)//後序 { if(root.leftChild!=null) pastOrder(root.leftChild); if(root.rightChild!=null) pastOrder(root.rightChild); System.out.println(root.data); } public int getHeight(Treenode node) { if(node==null) return 0; else { int i=getHeight(node.leftChild); int j=getHeight(node.rightChild); return i<j?j+1:i+1; } } } class Treenode { String data; int index; Treenode leftChild; Treenode rightChild; public String getData() { return data; } public void setData(String data) { this.data = data; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public Treenode getLeftChild() { return leftChild; } public void setLeftChild(Treenode leftChild) { this.leftChild = leftChild; } public Treenode getRightChild() { return rightChild; } public void setRightChild(Treenode rightChild) { this.rightChild = rightChild; } public Treenode(int index,String data) { setData(data); setIndex(index); setLeftChild(null); setRightChild(null); } }