发布网友 发布时间:2022-04-23 15:48
共3个回答
热心网友 时间:2023-10-08 21:53
假如你现在要建立一颗如下所示的树
a
b c
d e f g
那么str[] = a(b(d,e),c(f,g));这个表达式的意思是b,c是a的左右孩子,d,e是b的左右孩子,f,g是c的左右孩子
创建过程:
遇见字符'a',为结点a分配空间,让根结点b保存a分配空间的地址
遇见字符'(',结点a入栈保存,即top++;S[top] = p,tag=1表示创建a的左孩子
遇见字符'b',为结点b分配空间,由于tag=1说明他是a的左孩子,即S[top]->lchild=p
遇见字符'(',结点b入栈保存,即top++;S[top] = p,tag=1表示创建b的左孩子
遇见字符'd',为结点d分配空间,由于tag=1说明他是b的左孩子,即S[top]->lchild=p
遇见字符',',tag=2表示创建b的右孩子
遇见字符'e',为结点e分配空间,由于tag=2说明他是b的右孩子,即S[top]->rchild=p
遇见字符')',top--;弹一次栈,此时S[top]所保存的是结点a
遇见字符',',tag=2表示创建a的右孩子
遇见字符'c',为结点c分配空间,由于tag=2说明他是a的右孩子
... ...
关键你要看懂栈S和tag所起的作用
热心网友 时间:2023-10-08 21:53
建立一个二叉树追问能说下、是怎么建立的吗?
热心网友 时间:2023-10-08 21:55
看不懂,路过……!