二叉树的示意图:
下面说明如何使用java代码生成二叉树:
(1)生成二叉树的javabean:二叉树的主要属性有root、leftNode、rightNode
因此对应的javabean可写为:
public class TreeNode { private final char value; private TreeNode left; private TreeNode right; public TreeNode(char value){ this.value = value; this.left = null; this.right = null; } public char getValue() { return value; } public TreeNode getLeft() { return left; } public void setLeft(TreeNode left) { this.left = left; } public TreeNode getRight() { return right; } public void setRight(TreeNode right) { this.right = right; } }
(2)为上图中所画的二叉树赋初值(或者说初始化二叉树):
public class TreeCreator { public TreeNode createSampleTree(){ TreeNode root = new TreeNode('A'); root.setLeft(new TreeNode('B')); root.getLeft().setLeft(new TreeNode('D')); root.getLeft().setRight(new TreeNode('E')); root.getLeft().getRight().setLeft(new TreeNode('G')); root.setRight(new TreeNode('C')); root.getRight().setRight(new TreeNode('F')); return root; } }(3)核心代码的展示(前、中、后便利的实现)
public class TreeTraversal { //前序遍历--root->left->right public void preOrder(TreeNode root){ if(root==null){ return ; } System.out.print(root.getValue()); preOrder(root.getLeft()); preOrder(root.getRight()); } //中序遍历--left->right->root public void inOrder(TreeNode root){ if(root==null){ return ; } inOrder(root.getLeft()); System.out.print(root.getValue()); inOrder(root.getRight()); } //后续遍历---left->right-root public void postOrder(TreeNode root){ if(root==null){ return ; } postOrder(root.getLeft()); postOrder(root.getRight()); System.out.print(root.getValue()); } public static void main(String[] args) { TreeCreator creator = new TreeCreator(); TreeTraversal traversal = new TreeTraversal(); TreeNode sampleTree = creator.createSampleTree(); traversal.preOrder(sampleTree);//前序遍历 System.out.println(); traversal.inOrder(sampleTree);//中序遍历 System.out.println(); traversal.postOrder(sampleTree);//后续遍历 System.out.println(); } }