例如 str---A(B(D(,G)),C,(E,F))
扫描采用括号表示法表示二叉树的字符串 读到的符号为ch
使用一个栈保存双亲结点
引入一个变量k 作用是指定其后处理的是左孩子还是右孩子
k=1 处理左孩子 k=2 处理右孩子
情况如下
遇到一个实实在在的字母时创建一个节点
1 遇到 ch=左括号 将前面创建的结点作为父节点进栈,置k=1,表示其后的结点将作为这个节点的左孩子
2 遇到 ch=逗号 表示其后面创建的结点为右孩子结点(结点指的是实实在在的字母 否则无效)置k=2
3遇到 ch=右括号 表示栈中结点的左右孩子处理完毕,退一次栈
但是创建过程要以始终栈顶元素为父结点
原文地址:http://10782896.blog.51cto.com/10772896/1718675