国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用)

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

概述

接口

源碼

測試函數(shù)

運行結(jié)果

往期精彩內(nèi)容


前言

從前的日色變得慢,車,馬,郵件都慢,一生,只夠愛一個人。

概述

二叉樹的層序遍歷可以使用廣度優(yōu)先搜索(BFS)來實現(xiàn)。具體步驟如下:

  1. 創(chuàng)建一個隊列 queue,并將根節(jié)點入隊。

  2. 當(dāng)隊列不為空時,重復(fù)執(zhí)行以下步驟:

    a. 彈出隊頭元素,并訪問該節(jié)點。

    b. 如果該節(jié)點有左子節(jié)點,則將其左子節(jié)點入隊。

    c. 如果該節(jié)點有右子節(jié)點,則將其右子節(jié)點入隊。

  3. 當(dāng)隊列為空時,說明已經(jīng)遍歷完整個二叉樹。

?以上是層序遍歷的基本思想。

現(xiàn)在有二叉樹如下:數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c++,c語言,算法,鏈表,廣度優(yōu)先

創(chuàng)建一個空的隊列:數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c++,c語言,算法,鏈表,廣度優(yōu)先根節(jié)點入隊:數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c++,c語言,算法,鏈表,廣度優(yōu)先彈出隊頭元素(彈出即代表訪問,對該元素的操作,根據(jù)實際需求編寫即可),訪問該節(jié)點,此節(jié)點有兩個孩子,那么B,C兩個孩子入隊,?數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c++,c語言,算法,鏈表,廣度優(yōu)先

入隊之后,繼續(xù)彈出一個元素B,?訪問該節(jié)點,B節(jié)點只有一個左孩子,沒有右孩子,左孩子D入隊,右孩子沒有,不入隊。數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c++,c語言,算法,鏈表,廣度優(yōu)先

又一次彈出元素,訪問此節(jié)點,若有左右節(jié)點,則入隊,否則不入隊。直到隊列為空,?廣度優(yōu)先搜索(BFS)結(jié)束。

數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c++,c語言,算法,鏈表,廣度優(yōu)先

接口

void ergodic();

源碼

#include <malloc.h>
#include<string.h>
#include<iostream>
using namespace std;

class BINARYTREE
{
protected:
	struct NODESTRUCT
	{
		char data[15];
		struct NODESTRUCT* lChild;
		struct NODESTRUCT* rChild;
	};
	struct NODESTRUCT* treeRoot=nullptr;

protected:
	struct data
	{
		struct NODESTRUCT* nodePtr;
		struct data* pre, *bk;
	};
	struct data* top, *button;

private:
	struct NODESTRUCT* getPtrOfDataNode(char* data);
private:
	void push(struct NODESTRUCT* nodePtr);
	struct NODESTRUCT* pop();
public:
	BINARYTREE()
	{
		//隊列初始化
		top = button = new struct data;
        button->pre = nullptr;
        button->bk = nullptr; 
	}
	

	void ergodic();
};
void BINARYTREE::ergodic(){
	NODESTRUCT* nodePtr = nullptr;
	if (treeRoot != nullptr)
	{
		push(treeRoot);
		while (true)
		{
			nodePtr = pop();
			if (nodePtr == nullptr)
			{
				break;
			}
			cout << nodePtr->data << endl;
			if (nodePtr->lChild != nullptr)
			{
				push(nodePtr->lChild);
			}
			if (nodePtr->rChild != nullptr)
			{
				push(nodePtr->rChild);
			}
		}
	}
	return;
}

測試函數(shù)

#include<stdio.h>
#include<iostream>
using namespace std;
#include"BINARYTREE.h"
#include<windows.h>
int main()
{

BINARYTREE binaryTree;
binaryTree.initTree();
binaryTree.addLChild("A", "B");
binaryTree.addRChild("A", "C");
binaryTree.addLChild("B", "D");
binaryTree.addLChild("C", "E");
binaryTree.addRChild("C", "F");
binaryTree.ergodic();

system("pause");
?? ?return 0;
}

運行結(jié)果

數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),c++,c語言,算法,鏈表,廣度優(yōu)先

往期精彩內(nèi)容

數(shù)據(jù)結(jié)構(gòu)第十二天(隊列)文章來源地址http://www.zghlxwxcb.cn/news/detail-834505.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)第十六天(二叉樹層序遍歷/廣度優(yōu)先搜索(BFS)/隊列使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹——鏈?zhǔn)浇Y(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹——鏈?zhǔn)浇Y(jié)構(gòu)

    目錄 ?一、前置聲明 二、二叉樹的遍歷 2.1?前序、中序以及后序遍歷 2.2?層序遍歷 三、節(jié)點個數(shù)以及高度 3.1?節(jié)點個數(shù) 3.2?葉子節(jié)點個數(shù) 3.3?第k層節(jié)點個數(shù) 3.4?二叉樹的高度/深度 3.5?查找值為x的節(jié)點 四、二叉樹的創(chuàng)建和銷毀 4.1?構(gòu)建二叉樹 4.2?二叉樹銷毀 4.3?判斷二叉樹

    2024年02月16日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu)-二叉樹-二叉樹左右孩子交換(遞歸)

    ?注:本文采用隊列和遞歸的算法進行創(chuàng)建和層次遍歷。同時不能采用BFS和DFS,因為需要把當(dāng)前根節(jié)點的左孩、右孩勾鏈并輸入才能遞歸下一個根節(jié)點; 隊列用于存儲此時應(yīng)該遞歸的根節(jié)點; 格式:每一行尾不能有空格; Description 根據(jù)輸入利用二叉鏈表創(chuàng)建二叉樹,并將所

    2024年02月04日
    瀏覽(37)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹鏈?zhǔn)浇Y(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹鏈?zhǔn)浇Y(jié)構(gòu)

    ??write in front?? ??所屬專欄:初階數(shù)據(jù)結(jié)構(gòu) ???博客主頁:睿睿的博客主頁 ???代碼倉庫:??VS2022_C語言倉庫 ??您的點贊、關(guān)注、收藏、評論,是對我最大的激勵和支持?。?! 關(guān)注我,關(guān)注我,關(guān)注我 , 你們將會看到更多的優(yōu)質(zhì)內(nèi)容!! ??在之前的二叉樹的順序結(jié)

    2024年02月03日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)之二叉樹和平衡二叉樹

    1、二叉樹: 2、平衡二叉樹:

    2024年04月17日
    瀏覽(36)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹的介紹和二叉樹堆

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹的介紹和二叉樹堆

    ??作者簡介: 加油,旭杏,目前大二,正在學(xué)習(xí) C++ , 數(shù)據(jù)結(jié)構(gòu) 等?? ??作者主頁:加油,旭杏的主頁?? ?本文收錄在:再識C進階的專欄?? ??代碼倉庫:旭日東升 1?? ??歡迎大家點贊 ?? 收藏 ? 加關(guān)注哦!?? ???????樹這一概念,在我們剛開始聽說的時候會覺得

    2024年01月20日
    瀏覽(34)
  • 【數(shù)據(jù)結(jié)構(gòu)】 二叉樹理論概念!一文了解二叉樹!

    【數(shù)據(jù)結(jié)構(gòu)】 二叉樹理論概念!一文了解二叉樹!

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : 數(shù)據(jù)結(jié)構(gòu)解析 ?? 莫道桑榆晚,為霞尚滿天! 什么是二叉樹?二叉樹的組成構(gòu)造是什么樣的?我們將由淺入深,循序漸進的方式把二叉樹給搞明白,讓你徹底了解二叉樹! 樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n=0)個有限結(jié)點組成一

    2024年02月05日
    瀏覽(52)
  • 深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    二叉樹(1): 深入理解數(shù)據(jù)結(jié)構(gòu)第一彈——二叉樹(1)——堆-CSDN博客 二叉樹(2): 深入理解數(shù)據(jù)結(jié)構(gòu)第二彈——二叉樹(2)——堆排序及其時間復(fù)雜度-CSDN博客 前言: 在前面我們講了堆及其應(yīng)用,幫助我們初步了解了二叉樹的一些原理,但那與真正的二叉樹仍有不同,

    2024年04月09日
    瀏覽(32)
  • 【數(shù)據(jù)結(jié)構(gòu)】樹、二叉樹的概念和二叉樹的順序結(jié)構(gòu)及實現(xiàn)

    【數(shù)據(jù)結(jié)構(gòu)】樹、二叉樹的概念和二叉樹的順序結(jié)構(gòu)及實現(xiàn)

    之前我們學(xué)習(xí)了順序表、鏈表以及棧和隊列這些數(shù)據(jù)結(jié)構(gòu),但這些數(shù)據(jù)結(jié)構(gòu)都是線性的(一對一)。接下來要學(xué)習(xí) 非線性的數(shù)據(jù)結(jié)構(gòu)——樹(二叉樹) ,相比前面的,樹的結(jié)構(gòu)更加復(fù)雜,話不多說,直接進入正題吧。 樹是一種 非線性的數(shù)據(jù)結(jié)構(gòu) ,它是 一對多(也有可能是

    2024年02月07日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)——二叉樹的鏈?zhǔn)浇Y(jié)構(gòu)

    數(shù)據(jù)結(jié)構(gòu)——二叉樹的鏈?zhǔn)浇Y(jié)構(gòu)

    ? 個人主頁 : 日刷百題 系列專欄 : 〖C語言小游戲〗〖Linux〗〖數(shù)據(jù)結(jié)構(gòu)〗 ?〖C語言〗 ?? 歡迎各位 → 點贊 ??+ 收藏 ??+ 留言 ??? ? 這里我們使用先序遍歷的思想來創(chuàng)建二叉樹,這里的內(nèi)容對于剛接觸二叉樹的朋友可能有些難理解,不妨先看完下面的二叉樹各種遍歷

    2024年02月05日
    瀏覽(31)
  • 【數(shù)據(jù)結(jié)構(gòu)】二叉樹之鏈?zhǔn)浇Y(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】二叉樹之鏈?zhǔn)浇Y(jié)構(gòu)

    ?? 博客主頁 : 小羊失眠啦. ?? 系列專欄 : 《C語言》 《數(shù)據(jù)結(jié)構(gòu)》 《Linux》 《Cpolar》 ?? 感謝大家點贊??收藏?評論?? 在學(xué)習(xí)二叉樹各種各樣的操作前,我們先來回顧一下二叉樹的概念: 二叉樹是度不超過2的樹,由根結(jié)點和左右2個子樹組成,每個子樹也可以看作

    2024年02月04日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包