这道题就是所有树的知识点的集大成
思路大概是:
/* 伪码 */ //1. 利用下标建树————dfs() //2. 填充树的数据域————先序遍历 //3. 输出————层序遍历
第一点,利用下标建树见题图。也就是先不管结点的数据域而先把指针域链接起来:
第二点,填充树结点数据域,观察可以发现先序遍历就是从小到大的有序序列,那么可以在先序遍历过程中给数据域赋值
void pre_order_traversal(tree_t* t) { if (t == NULL) return; pre_order_traversal(t->left); t->data = int_keys[ptr++]; pre_order_traversal(t->right); }
第三点,层序遍历,直接套模板略