二叉树的层级顺序遍历

二叉树的层级顺序遍历,第1张

二叉树的层级顺序遍历
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()`更好。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5129104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存