Inorder tree traversal: Which definition is correct?

前端 未结 14 1305
轮回少年
轮回少年 2020-12-24 03:42

I have the following text from an academic course I took a while ago about inorder traversal (they also call it pancaking) of a binary tree (not BST):

14条回答
  •  萌比男神i
    2020-12-24 04:21

    package datastructure;

    public class BinaryTreeTraversal {

    public static Node node;
    
    public static Node sortedArrayToBST(int arr[], int start, int end) {
        if (start > end)
            return null;
    
        int mid = start + (end - start) / 2;
        Node node = new Node();
        node.setValue(arr[mid]);
    
        node.left = sortedArrayToBST(arr, start, mid - 1);
        node.right = sortedArrayToBST(arr, mid + 1, end);
        return node;
    }
    
    public static void main(String[] args) {
    
        int[] test = new int[] { 1, 2, 3, 4, 5, 6, 7 };
        Node node = sortedArrayToBST(test, 0, test.length - 1);
    
        System.out.println("preOrderTraversal >> ");
    
        preOrderTraversal(node);
    
        System.out.println("");
    
        System.out.println("inOrderTraversal >> ");
    
        inOrderTraversal(node);
    
        System.out.println("");
    
        System.out.println("postOrderTraversal >> ");
    
        postOrderTraversal(node);
    
    }
    
    public static void preOrderTraversal(Node node) {
    
        if (node != null) {
    
            System.out.print(" " + node.toString());
            preOrderTraversal(node.left);
            preOrderTraversal(node.right);
        }
    
    }
    
    public static void inOrderTraversal(Node node) {
    
        if (node != null) {
    
            inOrderTraversal(node.left);
            System.out.print(" " + node.toString());
            inOrderTraversal(node.right);
        }
    
    }
    
    public static void postOrderTraversal(Node node) {
    
        if (node != null) {
    
            postOrderTraversal(node.left);
    
            postOrderTraversal(node.right);
    
            System.out.print(" " + node.toString());
        }
    
    }
    

    }

    package datastructure;

    public class Node {

    E value = null;
    Node left;
    Node right;
    
    public E getValue() {
        return value;
    }
    
    public void setValue(E value) {
        this.value = value;
    }
    
    public Node getLeft() {
        return left;
    }
    
    public void setLeft(Node left) {
        this.left = left;
    }
    
    public Node getRight() {
        return right;
    }
    
    public void setRight(Node right) {
        this.right = right;
    }
    
    @Override
    public String toString() {
        return " " +value;
    }
    

    }

    preOrderTraversal >> 4 2 1 3 6 5 7 inOrderTraversal >> 1 2 3 4 5 6 7 postOrderTraversal >> 1 3 2 5 7 6 4

提交回复
热议问题