二叉树

二叉树如下图所示:
在这里插入图片描述
列出它的前序,中序,后序
前序:根–>左–>右
41,20,11,29,32,65,50,91,72,99

中序: 左–>根–>右
11,20,29,32,41,50,65,72,91,99

后序: 左–>右–>根
11,32,29,20,50,72,99,91,65,41

代码实现方法如下:
1.定义TreeNode类

import lombok.Data;

@Data
public class TreeNode {
    private int val;
    private TreeNode left;
    private TreeNode right;

    public TreeNode(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}
  1. 前序方法:
public static void previous(TreeNode treeNode){
        System.out.print(treeNode.getVal()+", ");
        if(treeNode.getLeft() != null){
            previous(treeNode.getLeft());
        }
        if(treeNode.getRight() != null){
            previous(treeNode.getRight());
        }
    }

3.中序方法:

public static void middle(TreeNode treeNode){

        if(treeNode.getLeft() != null){
            middle(treeNode.getLeft());
        }
        System.out.print(treeNode.getVal()+", ");
        if(treeNode.getRight() != null){
            middle(treeNode.getRight());
        }
    }

4.后序方法:

public static void after(TreeNode treeNode){
        if(treeNode.getLeft() != null){
            after(treeNode.getLeft());
        }
        if(treeNode.getRight() != null){
            after(treeNode.getRight());
        }
        System.out.print(treeNode.getVal()+", ");
    }

5.测试方法:

public static void main(String[] args) {
        TreeNode treeNodeRoot = new TreeNode(41);

        TreeNode treeNodeLeft = new TreeNode(20);
        TreeNode treeNodeLeft1 = new TreeNode(11);
        TreeNode treeNodeRight1 = new TreeNode(29);
        TreeNode treeNodeRight2 = new TreeNode(32);

        treeNodeRoot.setLeft(treeNodeLeft);
        treeNodeLeft.setLeft(treeNodeLeft1);
        treeNodeLeft.setRight(treeNodeRight1);
        treeNodeRight1.setRight(treeNodeRight2);

        TreeNode treeNodeRight = new TreeNode(65);
        TreeNode treeNodeLeft2 = new TreeNode(50);
        TreeNode treeNodeRight3 = new TreeNode(91);
        TreeNode treeNodeLeft3 = new TreeNode(72);
        TreeNode treeNodeRight4 = new TreeNode(99);

        treeNodeRoot.setRight(treeNodeRight);
        treeNodeRight.setLeft(treeNodeLeft2);
        treeNodeRight.setRight(treeNodeRight3);
        treeNodeRight3.setLeft(treeNodeLeft3);
        treeNodeRight3.setRight(treeNodeRight4);

        System.out.println("前序==================");
        previous(treeNodeRoot);
        System.out.println();
        System.out.println("中序==================");
        middle(treeNodeRoot);
        System.out.println();
        System.out.println("后序==================");
        after(treeNodeRoot);
    }

使用递归的方法,递归可以理解为栈,先进后出的。

demo地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值