由于我们可能遇到输入为二叉树,或是不规则的,故我们声明的结构体为包含兄弟指针和子指针如下图
对比图
由于我们包含输入,故错误输入即不按规定输入的情况,我们仅对输入失误做一定的debug,不对恶意输入做debug
操作示例
我们示例的结构为百度百科解释的前序遍历即后续遍历的例子如图
代码
#include <iostream>
struct Node;
typedef struct Node* tree;
typedef struct Node* T_node;
struct Node {
char content; //节点中储存的内容可以任意,这里为了简单起见,使用单个的字母
T_node sun;
T_node brother;
};
//提示信息
void hint();
//制造一个树
tree Make_tree(){
tree t = (T_node)malloc(sizeof(struct Node));
t->brother = NULL;
t->sun = NULL;
t->content='A';
return t;
}
//赋值操作
void evaluation(T_node p, char x) {
p->brother = NULL;
p->sun = NULL;
p->content = x;
}
//增加一个儿子
void Sun_add(T_node p, char x) {
T_node temp = (T_node)malloc(sizeof(struct Node));
evaluation(temp, x