void traverse(Node* root){ queue<Node*> q; if (root) { q.push(root); } while (!q.empty()) { const Node * const temp_node = q.front(); q.pop(); cout<<temp_node->value<<"n"; if (temp_node->left) { q.push(temp_node->left); } if (temp_node->right) { q.push(temp_node->right); } }}
在那里,没有其他特殊情况了。而且压痕已经清理干净,因此更容易理解。
或者:
void traverse(Node* root){ queue<Node*> q; if (!root) { return; } for (q.push(root); !q.empty(); q.pop()) { const Node * const temp_node = q.front(); cout<<temp_node->value<<"n"; if (temp_node->left) { q.push(temp_node->left); } if (temp_node->right) { q.push(temp_node->right); } }}
做一个
for循环。就个人而言,我喜欢额外的变量。变量名比总是说’q.front()`更好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)