數(shù)據(jù)結(jié)構(gòu)—基礎(chǔ)知識(12):二叉樹算法補充
-
復(fù)制二叉樹
【算法步驟】
如果是空樹,遞歸結(jié)束,否則進行以下操作:
- 申請一個新結(jié)點空間,復(fù)制根結(jié)點;
- 遞歸復(fù)制左子樹;
- 遞歸復(fù)制右子樹。
void Copy(BiTree T,BiTree &NewT) {//復(fù)制一棵和T完全相同的二叉樹 if(T==NULL)//如果是空樹,遞歸結(jié)束 { NewT=NULL; return; } else { NewT=new BiTNode; NewT->data=T->data;//復(fù)制根結(jié)點 Copy(T->lchild,NewT->lchild);//遞歸復(fù)制左子樹 Copy(T->rchild,NewT->rchild);//遞歸復(fù)制右子樹 }//else }
-
計算二叉樹的深度
【算法步驟】文章來源:http://www.zghlxwxcb.cn/news/detail-824343.html
如果是空樹,遞歸結(jié)束,深度為0,否則進行以下操作:文章來源地址http://www.zghlxwxcb.cn/news/detail-824343.html
- 遞歸計算左子樹的深度記為m;
- 遞歸計算右子樹的深度記為n;
- 如果m大于n,二叉樹的深度為m+1,否則為n+1
int Depth(BiTree T) {//計算二叉樹T的深度 if(T==NULL) return 0;//如果是空樹,深度為0,遞歸結(jié)束 else { m=Depth(T->lchild);//遞歸計算左子樹的深度記為m n=Depth(T->rchild);//遞歸計算右子樹的深度記為n if(m>n) return(m+1);//二叉樹的深度為m與n的較大者加1 else return(n+1) } }
-
統(tǒng)計二叉樹中結(jié)點的個數(shù)
int NodeCount(BiTree T) {//統(tǒng)計二叉樹T中結(jié)點的個數(shù) if(T==NULL) return 0;//如果是空樹,則結(jié)點個數(shù)為0,遞歸結(jié)束 else return NodeCount(T->lchild)+NodeCount(T->rchild)+1 //否則結(jié)點個數(shù)為左子樹的結(jié)點個數(shù)+右子樹的結(jié)點個數(shù)+1 }
-
統(tǒng)計二叉樹葉子結(jié)點個數(shù)
int LeafNode(BiTree T) {//統(tǒng)計二叉樹T中葉子結(jié)點的個數(shù) if(T==NULL) return 0;//空樹,返回0 else if(T->lchild==NULL&&T->rchild==NULL) return 1;//葉子結(jié)點,返回1 else//遞歸 return LeafNode(T->lchild)+LeafNode(T->rchild) }
到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)—基礎(chǔ)知識(12):二叉樹算法補充的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!