題目:輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉子結點一次經過的結點形成樹的一條路徑,最長路徑的長度為樹的深度。根節點的深度為1。
解體思路:如果根節點為空,則深度為0,返回0,遞迴的出口
如果根節點不為空,那麼深度至少為1,然後我們求他們左右子樹的深度,
比較左右子樹深度值,返回較大的那乙個
通過遞迴呼叫
#include#includeusing namespace std;struct binarytreenode
;//建立二叉樹結點
binarytreenode* createbinarytreenode(int value)
//連線二叉樹結點
void connecttreenodes(binarytreenode* pparent,binarytreenode* pleft,binarytreenode* pright)
}//求二叉樹深度
int treedepth(binarytreenode* proot)//計算二叉樹深度
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);
cout<
二叉樹(三)求二叉樹的深度
採用先序法建立一棵二叉樹,設計求該二叉樹的深度,二叉樹的資料域型別為字元型,擴充套件二叉樹的葉子結點用 表示,要求可以求多棵二叉樹的深度,當二叉樹的深度為0時程式結束。輸入描述 迴圈輸入多棵擴充套件二叉樹的先序遍歷序列,每棵樹佔一行,以回車結束,每棵二叉樹中結點之間以空格隔開輸出描述 輸出各二叉樹的...
求二叉樹的深度
已知一顆二叉樹的中序遍歷序列和後序遍歷序列,求二叉樹的深度。輸入資料有多組,輸入t 代表有t 組資料。每組資料報括兩個長度小於50 的字串,第乙個字串表示二叉樹的中序遍歷,第二個表示二叉樹的後序遍歷。輸出二叉樹的深度。2 dbgeafc dgebfca lnixu linux 4 3 include...
求二叉樹的深度
time limit 1000ms memory limit 65536k 有疑問?點這裡 已知一顆二叉樹的中序遍歷序列和後序遍歷序列,求二叉樹的深度。輸入資料有多組,輸入t 組資料。每組資料報括兩個長度小於50的字串,第乙個字串表示二叉樹的中序遍歷,第二個表示二叉樹的後序遍歷。輸出二叉樹的深度。2...