中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

門(mén)戶網(wǎng)站解決方案蘇州seo建站

門(mén)戶網(wǎng)站解決方案,蘇州seo建站,貴州省住房和城鄉(xiāng)建設(shè)廳證件查詢,尚硅谷前端培訓(xùn)多少錢(qián)前言:二叉樹(shù)的實(shí)現(xiàn)方式多種多樣,有數(shù)組實(shí)現(xiàn)滿二叉樹(shù),有鏈表實(shí)現(xiàn)完全二叉樹(shù),今天我們就用隊(duì)列來(lái)實(shí)現(xiàn)二叉樹(shù)。 創(chuàng)建二叉樹(shù): typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTre…

前言:二叉樹(shù)的實(shí)現(xiàn)方式多種多樣,有數(shù)組實(shí)現(xiàn)滿二叉樹(shù),有鏈表實(shí)現(xiàn)完全二叉樹(shù),今天我們就用隊(duì)列來(lái)實(shí)現(xiàn)二叉樹(shù)。

在這里插入圖片描述

創(chuàng)建二叉樹(shù):

typedef int BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}TreeNode;

層序遍歷:

void LevelOrder(TreeNode* root)
{Queue q;QueueInit(&q);if (root)QueuePush(&q, root);int levelSize = 1;while (!QueueEmpty(&q)){// 一層一層出while (levelSize--){TreeNode* front = QueueFront(&q);QueuePop(&q);printf("%d ", front->data);if (front->left)QueuePush(&q, front->left);if (front->right)QueuePush(&q, front->right);}printf("\n");levelSize = QueueSize(&q);}printf("\n");QueueDestroy(&q);
}

我們的隊(duì)列是用來(lái)存放二叉樹(shù)節(jié)點(diǎn)的,所以我們的目的是將節(jié)點(diǎn)一層一層的遍歷出來(lái),所以我們的第一層是根節(jié)點(diǎn),我們把它放入隊(duì)列,出隊(duì)列的時(shí)候就要帶它的左子樹(shù)和右子樹(shù)節(jié)點(diǎn)進(jìn)入隊(duì)列,那么我們?cè)趺粗烂繉拥墓?jié)點(diǎn)數(shù)呢?我們定義一個(gè)levelSize,初始值為1。
在這里插入圖片描述
我們的levelSize是每層的節(jié)點(diǎn)個(gè)數(shù),我們的節(jié)點(diǎn)個(gè)數(shù)因?yàn)樵陉?duì)列中,所以我們的個(gè)數(shù)就等于隊(duì)列的數(shù)據(jù)個(gè)數(shù),即levelSize = QueueSize(&q),我們通過(guò)循環(huán)讓節(jié)點(diǎn)一層一層的出隊(duì)列打印出來(lái)就達(dá)到了我們的目的。整個(gè)過(guò)程如下圖所示:
在這里插入圖片描述

判斷二叉樹(shù)是否是完全二叉樹(shù):

bool TreeComplete(TreeNode* root)
{Queue q;QueueInit(&q);if (root)QueuePush(&q, root);int levelSize = 1;while (!QueueEmpty(&q)){TreeNode* front = QueueFront(&q);QueuePop(&q);if (front == NULL)break;QueuePush(&q, front->left);QueuePush(&q, front->right);}// 前面遇到空以后,后面還有非空就不是完全二叉樹(shù)while (!QueueEmpty(&q)){TreeNode* front = QueueFront(&q);QueuePop(&q);if (front){QueueDestroy(&q);return false;}}QueueDestroy(&q);return true;
}

我們這里同樣按照節(jié)點(diǎn)的順序給它入隊(duì)列和出隊(duì)列,我們的levelSize控制每一層的數(shù)據(jù),我們的根節(jié)點(diǎn)出隊(duì)列就將它的左子樹(shù)和右子樹(shù)帶入隊(duì)列,如果中間有一個(gè)子樹(shù)為空那么就退出循環(huán),但是我們后面如果還有不為空的節(jié)點(diǎn),也就是不連續(xù)的話,那么就不是完全二叉樹(shù)。
在這里插入圖片描述
我們拿到2的左子樹(shù)3后,出隊(duì)列,再拿2的右子樹(shù),2的右子樹(shù)為空所以就結(jié)束循環(huán),我們?cè)诘疥?duì)列里面取隊(duì)列首元素,再出隊(duì)列,隊(duì)列的元素不為空,說(shuō)明二叉樹(shù)不連續(xù),所以該樹(shù)就不是,完全二叉樹(shù),反之就是完全二叉樹(shù)。

如果對(duì)大家有幫助的話就支持一下吧!感謝大家的支持!

http://www.risenshineclean.com/news/39999.html

相關(guān)文章:

  • 臨淄網(wǎng)站建設(shè)公司網(wǎng)站推廣搜索
  • 麗江網(wǎng)站建設(shè)怎么自己創(chuàng)建一個(gè)網(wǎng)站
  • ppt做視頻 模板下載網(wǎng)站營(yíng)銷(xiāo)方式和渠道
  • 重慶網(wǎng)站建設(shè)合肥公司網(wǎng)站怎么宣傳
  • 做界面網(wǎng)站用什么語(yǔ)言seo教程
  • 青海住房與建設(shè)廳網(wǎng)站廣東網(wǎng)約車(chē)漲價(jià)
  • 用dw做淘客網(wǎng)站的步驟南京百度推廣開(kāi)戶
  • 工控做網(wǎng)站網(wǎng)站免費(fèi)軟件
  • 做企業(yè)網(wǎng)站注意些啥百度指數(shù)數(shù)據(jù)分析平臺(tái)官網(wǎng)
  • 專門(mén)做圖片的網(wǎng)站有哪些今日軍事新聞
  • 網(wǎng)站建設(shè)銷(xiāo)售實(shí)習(xí)服務(wù)營(yíng)銷(xiāo)策劃方案
  • php網(wǎng)站微信支付怎么做黃頁(yè)引流推廣網(wǎng)站
  • 網(wǎng)站圖片計(jì)時(shí)器怎么做國(guó)內(nèi)時(shí)事新聞
  • 網(wǎng)站建設(shè)昆明色盲
  • 怎么查看網(wǎng)站的友情鏈接外鏈發(fā)布工具
  • 哪家做網(wǎng)站公司好搜索大全引擎地址
  • 免費(fèi)視頻網(wǎng)站制作愛(ài)上鏈外鏈購(gòu)買(mǎi)平臺(tái)
  • 網(wǎng)站建設(shè)與維護(hù)模擬一新聞?lì)^條免費(fèi)下載安裝
  • 返利網(wǎng)站程序產(chǎn)品推廣
  • 北京網(wǎng)站制作西安西安網(wǎng)紅
  • 做網(wǎng)站和web前端一樣嗎百度seo優(yōu)化招聘
  • 成都網(wǎng)站建設(shè)贏展成都網(wǎng)站建設(shè)方案推廣
  • 網(wǎng)站建設(shè)預(yù)付款比例惠州網(wǎng)絡(luò)營(yíng)銷(xiāo)
  • 成都廣告公司網(wǎng)站建設(shè)瑞金網(wǎng)絡(luò)推廣
  • 邯鄲網(wǎng)站建設(shè)公司群站優(yōu)化之鏈輪模式
  • 企業(yè)商務(wù)網(wǎng)站建設(shè)策劃書(shū)查詢域名注冊(cè)信息
  • 17網(wǎng)站一起做網(wǎng)店揭陽(yáng)seo合作
  • wordpress自定義登陸頁(yè)面天津seo方案
  • 用表格做網(wǎng)站廊坊首頁(yè)霸屏優(yōu)化
  • 網(wǎng)站建設(shè)要求百度指數(shù)疫情