劍指Offer 面試題39 二叉樹的深度

2021-06-25 13:52:36 字數 1108 閱讀 8822

/*

二叉樹的深度:

輸入一顆二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點(含根、也節點)形成樹的一條路徑,

最長路徑的長度為樹的深度

12 3

4 5 6

7圖中二叉樹的深度為4,從根節點1開始經過結點2和5,最終到達葉結點7

輸入:第一行輸入有n,n表示結點數,結點號從1到n。根結點為1。 n <= 10。

接下來有n行,每行有兩個個整型a和b,表示第i個節點的左右孩子孩子。a為左孩子,b為右孩子。當a為-1時,沒有左孩子。當b為-1時,沒有右孩子。

輸出:輸出乙個整型,表示樹的深度。

樣例輸入:

32 3

-1 -1

-1 -1

72 3

4 5-1 6

-1 -1

7 -1

-1 -1

-1 -1

樣例輸出:24

*/#include #include const int maxsize = 10 + 1;

typedef struct node

node;

node nodearr[maxsize];

int _iindex;

node* createnode()

int max(int a,int b)

int heightofbinarytree(node* phead)

else if(!phead->_left && !phead->_right)

else }

void process()

memset(nodearr,null,sizeof(nodearr));

_iindex = 0;

for(int j = 1 ; j <= n ; j++)//把所有節點全部建立出來

for(int i = 1 ; i <= n ; i++)//構建二叉樹

if(b != -1)

}printf("%d\n",heightofbinarytree(&nodearr[1])); }}

int main(int argc,char* argv)

劍指Offer 面試題39 二叉樹的深度

題目描述 輸入一棵二叉樹的根結點,求該樹的深度。從根結點到葉子點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。題目分析 如果一棵樹只有乙個結點,它的深度為1。如果根結點只有左子樹而沒有右子樹,那麼樹的深度應該是其左子樹的深度加1,同樣如果根結點只有右子樹而沒有左子樹,那麼...

(劍指Offer)面試題39 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。結點的定義如下 struct treenode 對於樹的問題基本都可以通過遞迴來解決。一棵二叉樹的深度,等於它的左子樹深度和右子樹深度的較大者 1 遞迴的結束條件就是 該結點為空,...

《劍指Offer》面試題 平衡二叉樹

題目 輸入乙個二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。思路 用後序遍歷實現 先遍歷節點的左右子樹,左右子樹都平衡才來判斷該節點是否平衡,如果左右子樹中有不平衡的,則直接返回false,避免了從上往下逐個節點地計算深度帶來...