给移民局的支票写成了USCIS,会有问题吗# Immigration - 落地生根
B*l
1 楼
12.4 Imagine you have an unbalanced binary search tree. Design an algorithm
which creates a linked list of all the nodes at each depth (eg, if you have
a tree with depth D, you’ll have D linked lists).
答案如下:
struct LLNode {
LLNode(Node* t, LLNode* n) : next(n), tree(t) {}
LLNode* next;
Node* tree;
};
struct ListOfLists {
ListOfLists() : next(NULL), data(NULL) {}
ListOfLists* next;
LLNode* data;
};
ListOfLists* TreeLinkedLists(Node* root) {
ListOfLists* results = new ListOfLists();
traverse(root, results);
return results;
}
void traverse(Node* root, ListOfLists* results) {
if (root == NULL) return; // nothing to do
results->head = new LLNode(root, results->head); // prepend tree node
if (results->next == NULL) {
// extend results if necessary
results->next = new ListOfLists();
}
traverse(root->left, results->next);
traverse(root->right, results->next);
}
traverse函数里这句"results->head = new LLNode(root, results->head);"是不是有
点问题,ListOfLists里没有head这个member啊,那应该怎么改呢?
which creates a linked list of all the nodes at each depth (eg, if you have
a tree with depth D, you’ll have D linked lists).
答案如下:
struct LLNode {
LLNode(Node* t, LLNode* n) : next(n), tree(t) {}
LLNode* next;
Node* tree;
};
struct ListOfLists {
ListOfLists() : next(NULL), data(NULL) {}
ListOfLists* next;
LLNode* data;
};
ListOfLists* TreeLinkedLists(Node* root) {
ListOfLists* results = new ListOfLists();
traverse(root, results);
return results;
}
void traverse(Node* root, ListOfLists* results) {
if (root == NULL) return; // nothing to do
results->head = new LLNode(root, results->head); // prepend tree node
if (results->next == NULL) {
// extend results if necessary
results->next = new ListOfLists();
}
traverse(root->left, results->next);
traverse(root->right, results->next);
}
traverse函数里这句"results->head = new LLNode(root, results->head);"是不是有
点问题,ListOfLists里没有head这个member啊,那应该怎么改呢?