【二叉樹2】逐層列印一棵二叉樹

來源:互聯網
上載者:User

【問題描述】

對【二叉樹1】中建立的二叉樹逐層列印,也就是說第一行列印第0層根節點,第二行列印第一層……如此類推。

【舉例】

一棵二叉樹如下:

列印結果為:

【代碼】

編程之美介紹了兩種實現,一種是遞迴,另一種就是如下方法,用兩個遊標記錄樹的每一層。代碼僅為為該函數的實現,和所需標頭檔。並且不包含二叉樹節點的定義以及main函數的調用

#include <iostream>#include <vector>using namespace std;void PrintBTreeByLevel(BTreeNode *root){if(root==NULL)return;vector<BTreeNode*> vec;vec.push_back(root);int current=0,last=1;while(current<vec.size()){while(current<last){cout<<vec[current]->value<<" ";if(vec[current]->leftchild)//Avec.push_back(vec[current]->leftchild);if(vec[current]->rightchild)//Bvec.push_back(vec[current]->rightchild);++current;}last=vec.size();cout<<endl;}}

【擴充一】列印一棵二叉樹的鏡像

只需要交換上述代碼中A和B的兩段if,也就是先讓一個節點的右孩子入棧,再讓左孩子入棧,結果如下:

【擴充二】從下到上逐層列印二叉樹

Button to Up用上述方法比較複雜,遍曆第一遍的時候,需要申請多餘的空間來記錄每一層元素的個數,然後反向遍曆。所以採用遞迴來解決。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.