题目:现有用括号表示法表示的二叉树:
"A(B(D(,G)),C(E,F))"
将其转为以二叉链表表现形式的树形结构并用层序遍历输出
实现代码:
代码的核心是第一个build函数中的第一个switch,这个switch决定了下一个节点到底是双亲节点还是孩子节点,决定了到底是左孩子还是右孩子,当前节点应不应该出栈和入栈这三个问题
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 20 typedef struct node { char data; struct node *left; struct node *right; }Node; Node *root=NULL; void build_tree(char *tree) { Node *stack[MAXSIZE]={NULL};int top=-1; Node *p=NULL; int k=3;//当k表示的是1时,表示当前节点将作为栈顶节点的左孩子,2表示栈顶元素的右孩子 while(*tree!='