1. 程式人生 > >C++資料結構--按層次遍歷二叉樹

C++資料結構--按層次遍歷二叉樹

class node
{
   public:
      T val;
//節點值
 node<T>* left; //左節點 
 node<T>* right; //右節點

 node():val(T()),left(nullptr),right(nullptr){}
 node(T v, node<T>* l=nullptr, node<T>* r=nullptr):val(v),left(l),right(r){}
};






node<char>*   createBTree()   //構建一棵示例二叉樹 
   {
node<char>* d=new node<char>('D');

node<char>* e=new node<char>('E');
node<char>* b=new node<char>('B',nullptr,d);
node<char>* c=new node<char>('C',e,nullptr);
node<char>* a=new node<char>('A',b,c);

   }

  void levelOrderTraver(node<char>* root)
  {
    queue<node<char>*> que;

    node<char> *tem; //儲存佇列岀隊時的臨時變數 
    if(root) //當頭節點不為空時
{

       que.push(root);
       while(!que.empty())
       {
tem=que.front(); //取隊首元素 
que.pop();  //岀隊 
cout<<tem->val<<ends;
if(tem->left)  //左子樹非空時入隊 
{
que.push(tem->left);
}

if(tem->right) //右子樹非空時入隊 
{
que.push(tem->right);
}
       }




  }


int main()
{
    node<char>* root=createBTree();
    cout<<"levelOrderTraver :" ;
    levelOrderTraver(root);
    cout<<endl;


return 0;
}


output:
levelOrderTraver :A B C D E