二叉树--后缀表达式转二叉树

如果有小白同学,不知道什么是后缀表达式,作者推荐:栈--后缀表达式求值_加瓦不加班的博客-CSDN博客

文章前言:如果有小白同学还是对于二叉树不太清楚,作者推荐:二叉树的初步认识_加瓦不加班的博客-CSDN博客

首先我们创建一个TreeNode:

static class TreeNode {
    public String val;
    public TreeNode left;
    public TreeNode right;

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

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

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

代码实现:

public TreeNode constructExpressionTree(String[] tokens) {
    LinkedList stack = new LinkedList<>();
    for (String t : tokens) {
        //switch版本:第一版
        switch (t) {
            case "+", "-", "*", "/" -> { // 运算符
                //遇到运算符, 出栈两次
                TreeNode right = stack.pop();
                TreeNode left = stack.pop();
                //然后将运算符放入栈中
                TreeNode parent = new TreeNode(t);
                //先出战的放入right中,后出战的放入left中
                parent.left = left;
                parent.right = right;
                stack.push(parent);
            }
            default -> { // 数字
                //1.遇到数字入栈
                stack.push(new TreeNode(t));
            }
        }
        //switch版本:第二版
        //            switch (t) {
//                case "+":// 运算符
//                case "-":
//                case "*":
//                case "/":
//                    //遇到运算符, 出栈两次
//                    TreeNode right = stack.pop();
//                    TreeNode left = stack.pop();
//                    //然后将运算符放入栈中
//                    TreeNode parent = new TreeNode(t);
//                    //先出战的放入right中,后出战的放入left中
//                    parent.left = left;
//                    parent.right = right;
//                    stack.push(parent);
//                    break;
//                default :// 数字
//                    //1.遇到数字入栈
//                    stack.push(new TreeNode(t));
//                    break;
//                }
    }
    return stack.peek();
}

你可能感兴趣的:(数据结构,数据结构,算法,leetcode,java)