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