二叉树遍历(递归实现)

TreeNode类

public class TreeNode {
    
    
    public int val;

    public TreeNode left;

    public TreeNode right;

    public TreeNode(int val){
    
    
        this.val = val;
    }

    public TreeNode(TreeNode left, int val, TreeNode right) {
    
    
        this.left = left;
        this.val = val;
        this.right = right;
    }

    @Override
    public String toString() {
    
    
        return String.valueOf(this.val);
    }
}

采用递归方式遍历二叉树

/**
 * 采用递归方式遍历二叉树
 */
public class TreeTraversal {
    
    
    public static void main(String[] args) {
    
    
        /**
                      1
                    /   \
                   2     3
         *       /      / \
         *      4      5   6
         */

        TreeNode root = new TreeNode(
                new TreeNode(new TreeNode(4),2,null),
                1,
                new TreeNode(new TreeNode(5),3,new TreeNode(6))
        );
        preOrder(root);
        System.out.println("-----------");
        inOrder(root);
        System.out.println("-----------");
        postOrder(root);
    }

    //前序遍历
    static void preOrder(TreeNode node) {
    
    
        if(node == null) {
    
    
            return;
        }
        System.out.println(node.val); //值
        preOrder(node.left); //递归左子树
        preOrder(node.right); //递归右子树
    }

    //中序遍历
    static void inOrder(TreeNode node) {
    
    
        if(node == null) {
    
    
            return;
        }
        inOrder(node.left);
        System.out.println(node.val);
        inOrder(node.right);
    }

    //后序遍历
    static void postOrder(TreeNode node) {
    
    
        if(node == null) {
    
    
            return;
        }
        postOrder(node.left);
        postOrder(node.right);
        System.out.println(node.val);
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_44860226/article/details/129738292