二叉樹的深度怎麼算?

General 更新 2024-05-19

二叉樹的深度怎麼算

深度為m的滿二叉樹有2^m-1個結點;

具有n個結點的完全二叉樹的深度為[log2n]+1.(log2n是以2為底n的對數

希望對你有幫助!

C語言中,二叉樹的深度指?怎樣計算

是二叉樹的基本性質··深度為m的二叉樹最多有2的m次冪減1的結點比如深度為5的滿二叉樹那就是31個結點

office二叉樹的深度怎麼算 10分

二叉樹的深度為12。

因為葉子節點為1個,按二叉樹理論得出(任意一棵二叉樹中度為0的節點總是比度為2的節點多一個),故得出此二叉樹度為2的節點為0個。

12(總節點)-1(度為0)- 0(度為2)=11(度為1)。

故證明此二叉樹每層只有1個節點,總共12層。

C語言二叉樹的深度指什麼?怎麼求?

從根節點到葉子結點一次經過的結點形成樹的一條路徑,最長路徑的長度為樹的深度。根節點的深度為1。

解體思路:

1.如果根節點為空,則深度為0,返回0,遞歸的出口。

2.如果根節點不為空,那麼深度至少為1,然後我們求他們左右子樹的深度,

3.比較左右子樹深度值,返回較大的那一個

4.通過遞歸調用

#include #include using namespace std;struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};//創建二叉樹結點BinaryTreeNode* CreateBinaryTreeNode(int value){ BinaryTreeNode* pNode=new BinaryTreeNode(); pNode->m_nValue=value; pNode->m_pLeft=NULL; pNode->m_pRight=NULL; return pNode;}//連接二叉樹結點void ConnectTreeNodes(BinaryTreeNode* pParent,BinaryTreeNode* pLeft,BinaryTreeNode* pRight){ if(pParent!=NULL) { pParent->m_pLeft=pLeft; pParent->m_pRight=pRight; }}//求二叉樹深度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;//返回深度較大的那一個}void main(){// 1// / \// 2 3// /\ \// 4 5 6// /// 7 //創建樹結點 BinaryTreeNode* pNode1 = CreateBinaryTreeNode(1); BinaryTreeNode* pNode2 = CreateBinaryTreeNode(2); BinaryTreeNode* pNod......

二叉樹的深度怎麼算

空樹高度為0;

如樹不空,設左子樹高度為l,右子樹高度為r;則樹高為:h=l>r ? l:r+1;

其實一個遞歸的過程

二叉樹的深度怎麼算

二叉樹的深度就是二叉樹的層次

如何寫算法求二叉樹中某個結點的深度

1,可以用遞歸方法,

2,先根遍歷

3,遞歸函數,增加形參,記錄當前的根的層。

4,找到和結點對應的記錄值 。

5,返回結點層數

偽代碼如下:

// T結點,L當前層,value,結點值

//返回-1:沒有找到,0-n:對應層

int get_node_layer(T *node,int value ,int L)

{int i=-1;

if(node)

{

if(node->value ==value)

return L;

if(i = get_node_layer(node->left,value ,L+1)!=-1) //查左子樹,如找到就返回

return i; /

if(i = get_node_layer(node->right,value ,L+1)!=-1)//查右子樹,如找到就返回

return i;

}

return i;

}

二叉樹的深度怎麼算

先遍歷二叉樹的左子樹的深度,然後再遍歷二叉樹右子樹的深度。最後判斷左子樹和右子樹的深度,如果左子樹比右子樹深則返回左子樹深度+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;}

相關問題答案
二叉樹的深度怎麼算?
二叉樹的直徑怎麼算?
二叉樹的深度是什麼?
氯氣的密度怎麼算?
二手房的契稅怎麼算?
百分之五的坡度怎麼算?
二手房的房齡怎麼算?
樑的跨度怎麼算?
鐵塊的密度怎麼算?
物體的密度怎麼算?