Java中二叉树遍历

作者: 孤独的二狗 | 来源:发表于2017-09-28 08:24 被阅读0次
public class Tree {

    /* 根节点 */
    Node root;

    public void createTree(){
        
    }

    /**
     * 前序遍历(递归)
     */
    public void preorderTraversal(){
        preorderTraversal(root);
    }

    public void preorderTraversal(Node node){
        if(node == null){
            return;
        }
        System.out.print(node.value);
        preorderTraversal(node.left);
        preorderTraversal(node.right);
    }

    /**
     * 中序遍历(递归)
     */
    public void inorderTraversal(){
        inorderTraversal(root);
    }
    public void inorderTraversal(Node node){
        if(node == null){
            return;
        }
        inorderTraversal(node.left);
        System.out.print(node.value);
        inorderTraversal(node.right);
    }

    /**
     * 后序遍历(递归)
     */
    public void postorderTraversal(){
        postorderTraversal(root);
    }
    public void postorderTraversal(Node node){
        if(node == null){
            return;
        }
        postorderTraversal(node.left);
        postorderTraversal(node.right);
        System.out.print(node.value);
    }

    /**
     * 反转二叉树
     * @param root
     * @return
     */
    public Node invertTree(Node root){
        if(root == null){
            return null;
        }
        root.left = invertTree(root.left);
        root.right = invertTree(root.right);

        Node tmp = root.left;
        root.left = root.right;
        root.right = tmp;
        return root;
    }

    /**
     * 获取二叉树的深度
     * @param node
     * @return
     */
    public int getDepth(Node node){
        if(node == null){
            return 0;
        }
        int depth1 = getDepth(node.left);
        int depth2 = getDepth(node.right);

        return 1 + Math.max(depth1,depth2);
    }

    public static class Node {

        /* 左子节点 */
        Node left;

        /* 右子节点  */
        Node right;

        /* 值 */
        int value;

        public Node(){

        }

        public Node(Node left,Node right,int value){
            this.left = left;
            this.right = right;
            this.value = value;
        }
    }
}

相关文章

网友评论

    本文标题:Java中二叉树遍历

    本文链接:https://www.haomeiwen.com/subject/ehqmextx.html