二叉树递归排序

我们话不多说直接看代码

import java.util.Arrays;
import java.util.LinkedList;
import java.util.NoSuchElementException;
public class TreeNode {

    int data;
    TreeNode leftChild;
    TreeNode rightChild;
    public TreeNode(int data) {
        this.data = data;
    }

    /**
     * 构建二叉树
     * @param linkedList    输入序列
     * @return
     */
    public static TreeNode createBinaryTree(LinkedList<Integer> linkedList) {
        TreeNode node = null;
        Integer data = null;
        if(linkedList == null && linkedList.isEmpty()) {
            return null;
        }
        try{
            data = linkedList.pop(); //现在的pop方法里做了对空判断为空则直接跑出NoSuchElementException异常
        }catch (NoSuchElementException ex) {
            data = null;
        }
        if(data != null){
            node = new TreeNode(data);
            node.leftChild = createBinaryTree(linkedList);
            node.rightChild = createBinaryTree(linkedList);
        }
        return node;
    }

    /**
     * 前序遍历
     * @param node
     */
    public static void preOrderTraversal(TreeNode node) {
        if(node ==null) {
            return ;
        }
        System.out.println(node.data);
        preOrderTraversal(node.leftChild);
        preOrderTraversal(node.rightChild);
    }

    /**
     * 中序遍历
     * @param node
     */
    public static void inOrderTraversal(TreeNode node) {
        if(node == null) {
            return ;
        }
        inOrderTraversal(node.leftChild);
        System.out.println(node.data);
        inOrderTraversal(node.rightChild);
    }

    /**
     * 后序遍历
     * @param node
     */
    public static void postOrderTraversal(TreeNode node) {
        if(node == null) {
            return ;
        }
        postOrderTraversal(node.leftChild);
        postOrderTraversal(node.rightChild);
        System.out.println(node.data);
    }

    public static void main(String[] args) {
        LinkedList<Integer> linkedList = new LinkedList<>(Arrays.asList(new Integer[]{3,2,9,null,null,10,null,null,8,null,4}));
        TreeNode treeNode = createBinaryTree(linkedList);
        System.out.println("前序遍历...");
        preOrderTraversal(treeNode);
    }
    //3,2,9,null,null,10,null,null,8,null,4
    //         3
    //      2    8
    //     9 10 4
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。