当前位置:网站首页>Traversal of binary tree - first order traversal, middle order traversal, and second order traversal

Traversal of binary tree - first order traversal, middle order traversal, and second order traversal

2022-06-13 01:21:00 Torlesse

Tree traversal - The first sequence traversal 、 In the sequence traversal 、 After the sequence traversal

The first sequence traversal

Binary Tree Preorder Traversal , Is to output the root node first , Then traverse the left subtree , Finally, traverse the right subtree , When traversing the left subtree and the right subtree , Also follow the rules of preorder traversal .

/** *  The first sequence traversal  * @param treeNode */
    public void preOrder(TreeNode treeNode){
    
        if(treeNode == null){
    
            return;
        }
        System.out.print(" " + treeNode.value);
        preOrder(treeNode.left);
        preOrder(treeNode.right);
    }

In the sequence traversal

Middle order traversal of binary trees , Is to recursively traverse the left subtree in the middle order first , Then output the value of the root node , Then traversing the right subtree in recursive middle order .

    /** *  In the sequence traversal  * @param treeNode */
    public void inOrder(TreeNode treeNode){
    
        if(treeNode == null){
    
            return;
        }
        inOrder(treeNode.left);
        System.out.print(" " + treeNode.value);
        inOrder(treeNode.right);
    }

After the sequence traversal

Postorder traversal of binary trees , It is to recurse first and then traverse the left subtree , Then recursively traverse the right subtree , Finally, output the value of the root node .

 /** *  After the sequence traversal  * @param treeNode */
    public void postOrder(TreeNode treeNode){
    
        if(treeNode == null){
    
            return;
        }
        postOrder(treeNode.left);
        postOrder(treeNode.right);
        System.out.print(" " + treeNode.value);
    }

Case study :
 Insert picture description here

public class TreeDemo {
    

    public class TreeNode{
    
        private Integer value;
        private TreeNode right;
        private TreeNode left;

        public TreeNode() {
    
        }

        public TreeNode(Integer value, TreeNode left, TreeNode right) {
    
            this.value = value;
            this.right = right;
            this.left = left;
        }

        public Integer getvalue() {
    
            return value;
        }

        public void setvalue(Integer value) {
    
            this.value = value;
        }

        public TreeNode getRight() {
    
            return right;
        }

        public void setRight(TreeNode right) {
    
            this.right = right;
        }

        public TreeNode getLeft() {
    
            return left;
        }

        public void setLeft(TreeNode left) {
    
            this.left = left;
        }
    }

    public static void main(String[] args) {
    
        TreeDemo treeDemo = new TreeDemo();
        TreeNode tree = treeDemo.getTree();
        System.out.println(" The first sequence traversal :");
        treeDemo.preOrder(tree);
        System.out.println();
        System.out.println(" In the sequence traversal :");
        treeDemo.inOrder(tree);
        System.out.println();
        System.out.println(" After the sequence traversal :");
        treeDemo.postOrder(tree);
    }

    public TreeNode getTree(){
    
        TreeNode treeNode = new TreeNode();
        treeNode.setvalue(13);
        treeNode.setLeft(new TreeNode(10,
                new TreeNode(7,
                new TreeNode(3,null,null),new TreeNode(4,null,null)),
                new TreeNode(12,new TreeNode(11,null,null),null)));


        treeNode.setRight(new TreeNode(15,
                new TreeNode(14,null,null),
                new TreeNode(17,null,null)));
        return treeNode;
    }

    /** *  The first sequence traversal  * @param treeNode */
    public void preOrder(TreeNode treeNode){
    
        if(treeNode == null){
    
            return;
        }
        System.out.print(" " + treeNode.value);
        preOrder(treeNode.left);
        preOrder(treeNode.right);
    }

    /** *  In the sequence traversal  * @param treeNode */
    public void inOrder(TreeNode treeNode){
    
        if(treeNode == null){
    
            return;
        }
        inOrder(treeNode.left);
        System.out.print(" " + treeNode.value);
        inOrder(treeNode.right);
    }

    /** *  After the sequence traversal  * @param treeNode */
    public void postOrder(TreeNode treeNode){
    
        if(treeNode == null){
    
            return;
        }
        postOrder(treeNode.left);
        postOrder(treeNode.right);
        System.out.print(" " + treeNode.value);
    }
}

give the result as follows :
 Insert picture description here

原网站

版权声明
本文为[Torlesse]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202280553281073.html