/*
二叉樹的深度:
輸入一顆二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點(含根、也節點)形成樹的一條路徑,
最長路徑的長度為樹的深度
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,避免了從上往下逐個節點地計算深度帶來...