Java实现数据结构中的二叉树的前序、中序、后序遍历

                     二叉树的示意图:

                                  

下面说明如何使用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();
    }

}

猜你喜欢

转载自blog.csdn.net/qq_38061755/article/details/80551393