有的时候 我们会得到一个二叉树的括号表示法(以字母为例)
例如 A(B(DE(H))C(FG))
如何通过这个括号表示法构造出二叉树?
若是一个一个加入左 或者右边 效率不佳 我设计了一个算法 可以自动把 二叉树的字母表示变成一个二叉树(仍是以字母为例)
思路
1.创建出一Object对象
2.先把括号表示法 A(B(DE(H))C(FG)) 第一个节点(这里为A)单独拿出来作为根节点 入栈
3.扫描给的String( A(B(DE(H))C(FG)) )
4.如果是左括号 直接入栈
5.如果是一个字母 那么封装成一个节点 再入栈
6.如果是右括号 不入栈 弹出栈前面至多两个节点 弹出左括号 把一个或者两个节点分别赋给左括号前面的节点(默认只有一个节点时优先挂在右节点)
7.3到6循环 知道扫描到括号表示法尾部
8.返回根节点
详细代码如下
public static Node creatbt(String s){
Stack<Object> stack = new Stack<Object>(); //用栈来存储数据
Node root = null;
int i = 1;