二叉樹的深度是什麼?
C語言二叉樹的深度指什麼?怎麼求?
從根節點到葉子結點一次經過的結點形成樹的一條路徑,最長路徑的長度為樹的深度。根節點的深度為1。
解體思路:
1.如果根節點為空,則深度為0,返回0,遞歸的出口。
2.如果根節點不為空,那麼深度至少為1,然後我們求他們左右子樹的深度,
3.比較左右子樹深度值,返回較大的那一個
4.通過遞歸調用
#include
二叉樹的深度怎麼算
先遍歷二叉樹的左子樹的深度,然後再遍歷二叉樹右子樹的深度。最後判斷左子樹和右子樹的深度,如果左子樹比右子樹深則返回左子樹深度+1,否則返回右子樹深度+1。
算法如下:
/* 初始條件: 二叉樹T存在。操作結果: 返回T的深度 */int BiTreeDepth(BiTree T){ int i,j; if(!T) return 0; if(T->lchild) i=BiTreeDepth(T->lchild); // 左子樹深度 else i=0; if(T->rchild) j=BiTreeDepth(T->rchild); // 右子樹深度 else j=0; return i>j?i+1:j+1;}
二叉樹的深度怎麼算
深度為m的滿二叉樹有2^m-1個結點;
具有n個結點的完全二叉樹的深度為[log2n]+1.(log2n是以2為底n的對數
)
希望對你有幫助!
二叉樹的性質有些啊?怎麼求它的深度?
二叉樹性質
性質1 :在二叉樹的第i層上至少有2^(i-1)個結點
性質2:深度為k的二叉樹至多有2^(k-1)個結點
性質3:對任何一棵二叉樹T,如果其終端結罰數為n0,度為2的結點數為n2,則n0=n2+1
性質4:具有n個結點的完全二叉樹的深度是【log2n】+1(向下取整)
性質5:如果對一棵有n個結點的完全二叉樹的結點按層序編號,則對任一結點i(1in),有:
如果i=1,則結點i是二叉樹的根,無雙親;如果i>1,則其雙親是i/2
如果2i>n,則結點i無左孩子;如果2in,則其左孩子是2i
如果2i+1>n,則結點i無右孩子;如果2i+1n,則其右孩子是2i+1
還希望採納
求教,樹的二叉樹的高度與深度一樣嗎?
引自考研大綱解析38頁:樹的深度是從根節點開始(其深度為1)自頂向下逐層累加的,而高度是從葉節點開始(其高度為1)自底向上逐層累加的。雖然樹的深度和高度一樣,但是具體到樹的某個節點,其深度和高度是不一樣的。我的理解是:非根非葉結點的深度是從根節點數到它的,高度是從葉節點數到它的。
vb中 二叉樹的度 結點 深度之間有什麼關係
詳見:zhidao.baidu.com/...me_tag
二叉樹根節點的深度是0還是1?
根結點如果不為空,深度為1,如果跟結點為空,則深度是0.
//求二叉樹深度
int TreeDepth(BinaryTreeNode* pRoot)//計算二叉樹深度
{
if(pRoot==NULL)//如果pRoot為NULL,則深度為0,這也是遞歸的返回條件
return 0;
//如果pRoot不為NULL,那麼深度至少為1,所以left和right=1
int left=1;
int right=1;
left+=TreeDepth(pRoot->m_pLeft);//求出左子樹的深度
right+=TreeDepth(pRoot->m_pRight);//求出右子樹深度
return left>right?left:right;//返回深度較大的那一個
}
二叉樹的深度就是高度嗎
樹的深度是從根節點開始(其深度為1)自頂向下逐層累加的,而高度是從葉節點開始(其高度為1)自底向上逐層累加的。雖然樹的深度和高度一樣,但是具體到樹的某個節點,其深度和高度是不一樣的。我的理解是:非根非葉結點的深度是從根節點數到它的,高度是從葉節點數到它的。
二叉樹寬度是什麼?
要求二叉樹的寬度的話,則可根據樹的高度設置一個數組temp。temp[i]用於存放第i層上的結點數(即寬度)。在訪問結點時,把相應計算該結點下一層的孩子數並存入相應數組元素中,遍歷左子樹後向上返回一層計算右子樹的寬度,並取出最大的一個數組元素作為樹的寬度。
#define M 10 //假設二叉樹最多的層數
int Width(BinTree T)
{
int static n[M];//向量存放各層結點數
int static i=1;
int static max=0;//最大寬度
if(T)
{
if(i==1) //若是訪問根結點
{
n[i]++; //第1層加1
i++; //到第2層
if(T->lchild)//若有左孩子則該層加1
n[i]++;
if(T->rchild)//若有右孩子則該層加1
n[i]++;
}
else
{ //訪問子樹結點
i++; //下一層結點數
if(T->lchild)
n[i]++;
if(T->rchild)
n[i]++;
}
if(max
Width(T->lchild);//遍歷左子樹
i--; //往上退一層
Width(T->rchild);//遍歷右子樹
}
return max;
}//算法結束
希望可以給你幫助!
什麼叫二叉樹的度和深度?請舉例說明
二叉樹結點的度數指該結點所含子樹的個數,二叉樹結點子樹個數最多的那個結點的度為二叉樹的度。
二叉樹的根結點所在的層數為1,根結點的孩子結點所在的層數為2,以此下去。深度是指所有結點中最深的結點所在的層數。