BinaryTree遍历练习::表达式树

package ExpressionTree;
import TraverseTree.TNode;
import java.util.Stack;;

/**
* 表达式树
*/
public class ExpTree {

/**表达式树的构建*/
public static TNode<Character> buildExpTree(String postfixExp) {
char c;
TNode<Character> newNode, newLeft, newRight;
Stack<TNode<Character>> s = new Stack<TNode<Character>>();
int i = 0, len = postfixExp.length();

while(i != len) {
while(postfixExp.charAt(i) == ' ' || postfixExp.charAt(i) == '\t')
i++;

if(i == len)
break;
c = postfixExp.charAt(i);
i++;

if(c == '+' || c == '-' || c == '*' || c == '/') {
newRight = s.pop();
newLeft = s.pop();

newNode = new TNode<Character>(c, newLeft, newRight);
s.push(newNode);
} else {
newNode = new TNode<Character>(c);
s.push(newNode);
}
}

if(! s.isEmpty())
return s.pop();
else
return null;
}

/**中序输出*/
public static <T> void inorderOutput(TNode<T> t) {
if (t != null) {
inorderOutput(t.left);
System.out.print(t.nodeValue + " ");
inorderOutput(t.right);
}
}

public static void main(String[] args) {
String exp = "abc*+";
TNode<Character> root = ExpTree.buildExpTree(exp);
ExpTree.inorderOutput(root); // a + b * c
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值