例如 str---A(B(D(,G)),C,(E,F))


扫描采用括号表示法表示二叉树的字符串 读到的符号为ch


使用一个栈保存双亲结点


引入一个变量k 作用是指定其后处理的是左孩子还是右孩子

k=1 处理左孩子 k=2 处理右孩子


情况如下 

遇到一个实实在在的字母时创建一个节点

1 遇到 ch=左括号  将前面创建的结点作为父节点进栈,置k=1,表示其后的结点将作为这个节点的左孩子

2 遇到 ch=逗号 表示其后面创建的结点为右孩子结点(结点指的是实实在在的字母 否则无效)置k=2

3遇到 ch=右括号 表示栈中结点的左右孩子处理完毕,退一次栈


但是创建过程要以始终栈顶元素为父结点