如何解决二叉树后修复到中缀
我正在尝试添加 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 举报,一经查实,本站将立刻删除。