說明:本文參考網友的實現,如有版權問題,請聯繫我。本文代碼在vs2019下運行通過,不過,測試用例測試很完整。
struct BinaryTreeNode {
public:
BinaryTreeNode(int value) {
value_ = value;
left_ = nullptr;
right_ = nullptr;
}
int value_;
BinaryTreeNode* left_;
BinaryTreeNode* right_;
};
//廣度優先
void bfs(BinaryTreeNode* root) {
if (nullptr == root)
return;
queue<BinaryTreeNode*> q;
q.push(root);
while (!q.empty()) {
BinaryTreeNode* p = q.front();
cout << p->value_ << " ";
if (p->left_)
q.push(p->left_);
if (p->right_)
q.push(p->right_);
q.pop();
}
}
int main()
{
BinaryTreeNode *root = new BinaryTreeNode(10);
BinaryTreeNode *root_l = new BinaryTreeNode(5);
BinaryTreeNode* root_r = new BinaryTreeNode(20);
root->left_ = root_l;
root->right_ = root_r;
BinaryTreeNode* root_l_l = new BinaryTreeNode(3);
BinaryTreeNode* root_l_r = new BinaryTreeNode(7);
root_l->left_ = root_l_l;
root_l->right_ = root_l_r;
bfs(root);
cout << endl;
return 0;
}