財神娛樂首存即享優惠回饋唷~詳情請進👉

《數據布局二手拉霸機》第五章 樹以及二叉樹 擴大二叉完成代碼示例

威力彩開獎號碼

人人好。本例是一個擴大二叉樹。完成了樹的組織、前序遍歷、中序遍歷、后序遍歷,計算葉子個數等操作。請人人參考。并能觸類旁通,天真把握法式思惟。

#include <iostream>
using namespace std;

struct BiNode   //二叉樹的結點布局
{	char data;       
	BiNode *lchild,*rchild;
};


class BiTree
{
public:
	BiTree( ){root = Creat(root);}         //組織函數,確立一棵二叉樹
	~BiTree( ){Release(root);}          //析構函數,開釋各結點的存儲空間
	void PreOrder( ){PreOrder(root);}     //前序遍歷二叉樹
	void InOrder( ){InOrder(root);}       //中序遍歷二叉樹
	void PostOrder( ){PostOrder(root);}   //后序遍歷二叉樹
        void CountLeaf(){CountLeaf(root);}
	void PrintLeafCount();
private:
	BiNode *root;                             //指向根結點的頭指針
	int LeafCount;
	BiNode *Creat(BiNode *bt);       //組織函數挪用
	void Release(BiNode *bt);                   //析構函數挪用
	void PreOrder(BiNode *bt);                  //前序遍歷函數挪用
	void InOrder(BiNode *bt);                     //中序遍歷函數挪用
	void PostOrder(BiNode *bt);                 //后序遍歷函數挪用
	void CountLeaf(BiNode *bt);
};

BiNode *BiTree::Creat(BiNode *bt)
{   char ch;
    cout<<"大眾請輸出創立一棵二叉樹的結點數據公眾<<endl;
    cin>>ch;
    if (ch=='#') return NULL;
    else{bt = new BiNode;       //天生一個結點
         bt->data=ch;
         bt->lchild = Creat(bt->lchild);    //遞回確立左子樹
         bt->rchild = Creat(bt->rchild);    //遞回確立右子樹
    } 
   LeafCount=0;
    return bt;

}     

void BiTree::Release(BiNode *bt)
{
	if (bt != NULL)
       {                  
	 Release(bt->lchild);   //開釋左子樹
         Release(bt->rchild);   //開釋右子樹
         delete bt;
	}  
}

void BiTree::CountLeaf(BiNode *bt)
{  if (bt != NULL)
    {if (bt->lchild==NULL && bt->rchild==NULL)
         LeafCount++;   
      CountLeaf(bt->lchild);
      CountLeaf(bt->rchild);   //右子樹
   }
}

void BiTree::PrintLeafCount()
{
cout<<LeafCount;
}
void BiTree::PreOrder(BiNode *bt)
{   if(bt==NULL)  return;
    else?
    {	cout<<捕魚達人bt->data<<公眾 "大眾;
        PreOrder(bt->lchild);
	PreOrder(bt->rchild);
	}
}

void BiTree::InOrder(BiNode *bt)
{   if (bt==NULL)  return;      //遞回挪用的收場前提	          
    else {	
        InOrder(bt->lchild);    //中序遞回遍歷root的左子樹
        cout<<bt->data<<公眾 "大眾;    //走訪根結點的數據捕魚達人攻略域
        InOrder(bt->rchild);    //中序遞回遍歷root的右子樹
	}
}

void BiTree::PostOrder(BiNode *bt)
{   if (bt==NULL)  return;       //遞回挪用的收場前提
    else {	
        PostOrder(bt->lchild);    //后序遞回遍歷root的左子樹
        PostOrder(bt->rchild);    //后序遞回遍歷root的右子樹
        cout<<bt->data<<"大眾 "大眾;      //走訪根結點的數據域
	}
}

void main()
{	B539中二合多少錢iTree T; //創立一棵樹
	//cout<<"大眾------前序遍歷------ "大眾<<endl;
	T.PreOrder( );
	cout<<endl;
	cout<<"大眾------中序遍歷------ "大眾<<endl;
	T.InOrder( );
	cout<<endl;
	cout<<"大眾------后序遍歷------ "大眾<<endl;
	T.PostOrder( );
	cout<<endl;
	cout<<公眾------葉子個數------ "大眾<<endl;
	T.CountLeaf();
	T.PrintLeafCount();
	cout<<endl;
}

? ? ?法式運轉后,可以參照講義P119頁,輸出一個字符序列,確立如圖5-26的二叉樹。將分手輸入各個遍歷結點序列,以及葉子的個數。
葉子個數為2.

? ? 人人可以輸出別的樹序列進行磨練。

? ? 祝人人調試法式勝利。

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處電競運彩怎麼買置。