微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

二叉树后修复到中缀

如何解决二叉树后修复到中缀

我正在尝试添加 Scanner 以便接受用户输入,但我遇到了这个算法的问题,我不知道如何解决。线

char[] chararray = postfix.tochararray();

出现错误

未为类型 Scanner 定义 tochararray() 方法

我只是在玩我找到的这段代码,以便我可以添加用户输入,因此我知道除此之外一定还有我忘记的东西。有什么见解吗?

package binaryTree;
//Java program to construct an expression tree

import java.util.Stack;
import java.util.Scanner;
//Java program for expression tree
class Node {

char value;
Node left,right;

Node(char item) {
    value = item;
    left = right = null;
}
}

class ExpressionTree {

// A utility function to check if 'c'
// is an operator

boolean isOperator(char c) {
    if (c == '+' || c == '-'
            || c == '*' || c == '/'
            || c == '^') {
        return true;
    }
    return false;
}

// Utility function to do inorder traversal
void inorder(Node t) {
    if (t != null) {
        inorder(t.left);
        System.out.print(t.value + " ");
        inorder(t.right);
    }
}

// Returns root of constructed tree for given
// postfix expression
Node constructTree(char postfix[]) {
    Stack<Node> st = new Stack<Node>();
    Node t,t1,t2;

    // Traverse through every character of
    // input expression
    for (int i = 0; i < postfix.length; i++) {

        // If operand,simply push into stack
        if (!isOperator(postfix[i])) {
            t = new Node(postfix[i]);
            st.push(t);
        } else // operator
        {
            t = new Node(postfix[i]);

            // Pop two top nodes
            // Store top
            t1 = st.pop();   // Remove top
            t2 = st.pop();

            // make them children
            t.right = t1;
            t.left = t2;

            // System.out.println(t1 + "" + t2);
            // Add this subexpression to stack
            st.push(t);
        }
    }

    // only element will be root of expression
    // tree
    t = st.peek();
    st.pop();

    return t;
}

public static void main(String args[]) {

    ExpressionTree et = new ExpressionTree();
    Scanner postfix = new Scanner (system.in);
    char[] chararray = postfix.tochararray();
    Node root = et.constructTree(chararray);
    System.out.println("infix expression is");
    et.inorder(root);

 }
}

解决方法

以下代码将简单地解决您遇到的错误。这只是您应该对方法 main 进行的更改。

public static void main(String args[]) {
    ExpressionTree et = new ExpressionTree();
    Scanner scanner = new Scanner(System.in); // Added this line.
    String postfix = scanner.nextLine(); // Changed this line.
    char[] charArray = postfix.toCharArray();
    Node root = et.constructTree(charArray);
    System.out.println("infix expression is");
    et.inorder(root);
 }

错误信息...

未定义类型 Scanner 的 toCharArray() 方法

表示类 java.util.Scanner包含名为 toCharArray() 的方法。

java.util.Scanner 包含方法 nextLine(),它读取用户通过标准输入流(通常是计算机键盘)输入的一行文本。

方法 nextLine() 返回一个字符串,类 java.lang.String 包含方法 toCharArray()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。