数据结构与算法分析——c语言描述 练习4.35 答案
#include"fatal.h"
#include<stdlib.h>
#include<queue>
using namespace std;
typedef int ElementType;
struct TreeNode;
typedef struct TreeNode *Position;
typedef struct TreeNode *SearchTree;
struct TreeNode {
ElementType element;
SearchTree left;
SearchTree right;
};
SearchTree GenTree(int H, int *lastNodeElem) {
if (H >= 0) {
SearchTree t = (SearchTree)malloc(sizeof(struct TreeNode));
if (t == NULL)
Error("OUT OF MEMORY");
t->left = GenTree(H - 1, lastNodeElem);
t->element = ++*lastNodeElem;
t->right = GenTree(H - 1, lastNodeElem);
return t;
}
return NULL;
}
SearchTree makePerfectTree(int H) {
int lastElem = 0;
return GenTree(H, &lastElem);
}
void dir_level(queue<pair<SearchTree,int>> nodesToTravel) {
int level = -1;
while(!nodesToTravel.empty()) {
auto treeAndDep