c語言求二叉樹最大深度,c語言求二叉樹高度

本文目錄一覽:

C語言二叉樹求其深度

建議樓主到這裡看看,其實每一層都是有一個return函數,不知道樓主注意到了沒有,其次,reutrn函數初始返回0, 接著有 return (mn?m:n)+1;也就是一個一個一層一層加上去,所以會返回,而最後返回的就是答案

C語言二叉樹求最大值求指點?

問題出在max這個變數上。臨時變數么有返回。可以將這個函數

int getmax(btnode*t,int max)

{

if(t!=NULL)

{

if(maxt-data)

          max=t-data;

      getmax(t-lchild,max);

getmax(t-rchild,max);

}

return max;

}

修改為:

int getmax(btnode *t, int* max)

{

    if(t != NULL)

    {

        if(*max  t-data)

            *max = t-data;

        getmax(t-lchild, max);

        getmax(t-rchild, max);

    }

    return *max;

}

另外,你要注意你的編碼格式了。需要按照一定的格式來編寫,這樣可以讓別人看的時候更清晰。

C語言 這個求二叉樹深度的函數的思路是什麼 麻煩詳細一點

這是遞歸函數

很容易理解的

二叉樹深度就是左右子樹深度的最大者+1

可見圖片的代碼是錯的

最後的if語句if(depleft)

應該改為if(depleftdepright)

才對

哪位大俠知道 求二叉樹深度的類C語言演算法? 謝謝

主方法調用RootFirst(root,0);即可,g_nMax

即為最終的樹的深度。

int

g_nMax

=

0;

voild

RootFirst(TreeNode

*p,int

nLevel)

{

if

(null

==

p-left

null

==

p-right)

//當前為葉子節點

{

if

(g_nMax

nLevel)

{

g_nMax

=

nLevel;

return;

}

}

if(null

!=

p-left

)

{

RootFirst(p-left,nLevel+1);//遍歷左子樹

}

if(null

!=

p-right)

{

RootFirst(p-right,nLevel+1);//遍歷右子樹

}

}

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

二叉樹中結點的最大層數稱為二叉樹的深度。計算:就是結點最大層數的個數,這還用計算,一看就知道。

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

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

解體思路:

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

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

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

4.通過遞歸調用

#includeiostream

#includestdlib.h

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 leftright?left:right;//返回深度較大的那一個

}

void main()

{

//            1

//         /      \

//        2        3

//       /\         \

//      4  5         6

//           /

//        7

    //創建樹結點

    BinaryTreeNode* pNode1 = CreateBinaryTreeNode(1);

    BinaryTreeNode* pNode2 = CreateBinaryTreeNode(2);

    BinaryTreeNode* pNode3 = CreateBinaryTreeNode(3);

    BinaryTreeNode* pNode4 = CreateBinaryTreeNode(4);

    BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5);

    BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6);

    BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7);

    //連接樹結點

    ConnectTreeNodes(pNode1, pNode2, pNode3);

    ConnectTreeNodes(pNode2, pNode4, pNode5);

    ConnectTreeNodes(pNode3, NULL,   pNode6);

    ConnectTreeNodes(pNode5, pNode7,  NULL );

    int depth=TreeDepth(pNode1);

    coutdepthendl;

    system(“pause”);

}

出處:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239274.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:15
下一篇 2024-12-12 12:15

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 深度查詢宴會的文化起源

    深度查詢宴會,是指通過對一種文化或主題的深度挖掘和探究,為參與者提供一次全方位的、深度體驗式的文化品嘗和交流活動。本文將從多個方面探討深度查詢宴會的文化起源。 一、宴會文化的起源 …

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28

發表回復

登錄後才能評論