国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

算法Day12-層次遍歷二叉樹

2019-11-11 06:08:58
字體:
供稿:網(wǎng)友

題目

給定一個(gè)二叉樹,返回其節(jié)點(diǎn)值的層次遍歷(即從左到右,一層一層遍歷) 例如: 給定二叉樹{3,9,20,#,#,15,7} 3 / / 9 20 / / 15 7 返回層次遍歷如下: [ [3], [9,20] [15,7] ]

解析

通過廣度優(yōu)先遍歷來實(shí)現(xiàn)層次遍歷。創(chuàng)建一個(gè)Queue來緩存每一層的樹節(jié)點(diǎn),在遍歷Queue的過程中,每取出一個(gè)元素,將該元素的左右子節(jié)點(diǎn)按順序插入到Queue中。一直遍歷下去,直到Queue為空。

代碼

vector< vector<int> >levelOrder(TreeNode *root){ vector< vector<int> > result; if(root == NULL) return result; queue<TreeNode*> nodeQ; //先進(jìn)先出(FIFO) 隊(duì)列類型的nodeQ變量用來緩存每一層的數(shù)節(jié)點(diǎn) nodeQ.push(root); //push int nextLevelCnt=0, currentLeveCnt=1; vector<int> layer; //layer存放的為某一層的節(jié)點(diǎn)數(shù)值,通過layer作為中間變量加入到result int visitedCnt=0; //訪問過的節(jié)點(diǎn)數(shù)目 while(nodeQ.size() != 0) // 隊(duì)列不為空時(shí)訪問,否則返回結(jié)果 { TreeNode* node = nodeQ.front(); nodeQ.pop(); visitedCnt++; layer.push_back(node->val); if(node->left != NULL) //為空時(shí)不做處理 { //不為空則進(jìn)隊(duì)列 nodeQ.push(node->left); nextLevelCnt++; } if(node->right != NULL) { nodeQ.push(node->right); nextLevelCnt++; } if(visitedCnt == currentLeveCnt) //訪問過的節(jié)點(diǎn)等于該層節(jié)點(diǎn)數(shù)時(shí),開始下一層的訪問。 { //下一層訪問開始,visitedCnt置0,當(dāng)前層數(shù)節(jié)點(diǎn)數(shù)為上層的nextLevelCnt數(shù),nextLevelCnt置0 visitedCnt = 0; currentLeveCnt = nextLevelCnt; nextLevelCnt = 0; result.push_back(layer); //將上層的節(jié)點(diǎn)加入結(jié)果 layer.clear(); } } return result;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 绥化市| 丹寨县| 开化县| 桃园市| 北辰区| 临湘市| 北宁市| 长治县| 澄迈县| 三穗县| 吴江市| 涞源县| 晴隆县| 舒城县| 隆回县| 广宗县| 揭阳市| 长治县| 三门峡市| 会东县| 余江县| 平凉市| 林芝县| 浪卡子县| 微山县| 章丘市| 金溪县| 专栏| 华宁县| 高要市| 罗山县| 苏尼特右旗| 贵阳市| 淮北市| 张家口市| 桃江县| 乌拉特中旗| 隆子县| 紫阳县| 密云县| 庄浪县|