二叉樹系列-4-廣度優先

說明:本文參考網友的實現,如有版權問題,請聯繫我。本文代碼在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;
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章