TreeNode.javajava
package com.wanali.java_ds.ergodictree; public class TreeNode { public Object data; public TreeNode lchild; public TreeNode rchild; // 構造空結構體 public TreeNode() { this(null); } // 左右節點爲空 public TreeNode(Object data) { this.data = data; } // 定義非空節點 public TreeNode(Object data, TreeNode lchild, TreeNode rchild) { this.data = data; this.lchild = lchild; this.rchild = rchild; } }
Tree.javapost
package com.wanali.java_ds.ergodictree; public class Tree { TreeNode root; public Tree() { this(null); } public Tree(TreeNode root) { this.root = root; } // public void preRootTraverse(TreeNode T) { if (T != null) { System.out.print(T.data); preRootTraverse(T.lchild); preRootTraverse(T.rchild); } } public void inRootTraverse(TreeNode T) { if (T != null) { inRootTraverse(T.lchild); System.out.print(T.data); inRootTraverse(T.rchild); } } public void postRootTarverse(TreeNode T) { if (T != null) { postRootTarverse(T.lchild); postRootTarverse(T.rchild); System.out.print(T.data); } } public TreeNode getRoot() { return root; } public void setRoot(TreeNode root) { this.root = root; } }
TestTree.javathis
package com.wanali.java_ds.ergodictree; public class TestTree { public Tree creatTree() { TreeNode d = new TreeNode('D'); TreeNode g = new TreeNode('G'); TreeNode h = new TreeNode('H'); TreeNode e = new TreeNode('E'); TreeNode f = new TreeNode('F', null, h); TreeNode b = new TreeNode('B', d, f); TreeNode c = new TreeNode('C', f, null); TreeNode a = new TreeNode('A', b, c); return new Tree(a);// 建立根節點爲a的二叉樹 } public static void main(String[] args) { TestTree testTree = new TestTree(); Tree tree = testTree.creatTree(); TreeNode root = tree.root;// 得到樹的根節點 System.out.println("先序遍歷:"); tree.preRootTraverse(root); System.out.println("\n" + "中序遍歷:"); tree.inRootTraverse(root); System.out.println("\n" + "後序遍歷:"); tree.postRootTarverse(root); } }
運行結果以下:code